Vraag Hoe start / stop / herstart ik launchd services vanaf de commandoregel?


Hoe herstart ik, zeg bijvoorbeeld mijn httpd of afpd, met Mac OS X> = 10.5 (Leopard-), zonder de GUI te hoeven gebruiken en naar Systeemvoorkeuren -> Delen en het verwijderen / controleren van "Web delen"?

Ik ben op zoek naar het canonieke equivalent van Debian invoke-rc.d apache2 restart.

EDIT: De vraag gaat over lancering van gecontroleerde diensten in het algemeen, niet specifiek Apache (- dat was gewoon een voorbeeld).


128
2017-10-26 12:21


oorsprong


Uit de antwoorden tot nu toe is het juist om aan te nemen dat er geen enkele launchctl-opdracht is herstarten een dienst? - JS.


antwoorden:


Hallo launchctl (8) is je vriend. Houd er rekening mee dat sommige services (bijvoorbeeld sshd) zijn uitgeschakeld in het configuratiebestand, dus u moet het gebruiken -w schakelen bij het laden. Hier is een sshd-voorbeeld:

$ sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist 

U kunt de service stoppen met behulp van de unload subopdracht.

$ sudo launchctl unload  /System/Library/LaunchDaemons/ssh.plist 

Om de diensten te vermelden, zoals je misschien al hebt geraden, gebruik je het subcommando 'lijst';)

veel plezier, n


143
2017-10-26 14:00



In aanvulling op, launchctl list klaagt niet maar toont niet alles, sudo launchctl list is daarvoor nodig. - conny
Het is niet dat het niet alles laat zien, het laat een compleet andere lijst zien. Wanneer je rent launchctl als een normale gebruiker toont / beheert het LaunchAgents in uw gebruikerssessie; voer het uit als root, het toont / beheert de systeem-brede LaunchDaemons. - Gordon Davisson
Ik zie "com.openssh.sshd" in die lijst, dus ik denk dat die configuratie "geladen" is. Nu, hoe komt het bijvoorbeeld sudo launchctl start com.openssh.sshd doet het niet iets, niet evan mislukken met een foutmelding, nog minder dus eigenlijk iets lanceren? - conny
@conny In het algemene geval kan het verwarrend zijn, maar wanneer je een service aan het schrijven bent en je vermoedt bijvoorbeeld dat er iets smerigs gebeurt bij het opstarten, kun je het een keer laden en het gebruik 'stop' / 'start' om het probleem te debuggen . - nayden
Waarom geen vermelding van launchctl start <label> of launchctl stop <label>? Als het al is gestart door launchctl, is het niet nodig om het plist-bestand opnieuw te laden (tenzij het ook is gewijzigd?). Het is vervelend dat er geen is restart of reload commando. Iedereen weet van een single-command manier om (bijvoorbeeld) mongod een configuratiebestand te laten veranderen? Ik ben gewoon niet tevreden met ... stop ... && ... start .... - Brian


sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist


7
2017-10-26 14:20





Je zoekt launchctl.

SYNOPSIS
 launchctl [subcommand [arguments ...]]

DESCRIPTION
 launchctl interfaces with launchd to load, unload daemons/agents and gen-
 erally control launchd.  launchctl supports taking subcommands on the
 command line, interactively or even redirected from standard input.
 These commands can be stored in $HOME/.launchd.conf or /etc/launchd.conf
 to be read at the time launchd starts.

2
2017-10-26 13:27



Maar het lezen van de man-pagina vertelt me ​​niet wat het equivalent van beide is invoke-rc.d my-little-daemon restart is ... Het verwijst naar "job_label" maar vertelt me ​​niet hoe ik de "job_label" -beschrijvingen moet vermelden. - conny
Ik denk dat de reactie van nayden dit heeft gedekt. - eric.s


Je zou het gewoon kunnen doen

sudo launchctl stop com.openssh.sshd

Als u de volledige servicenaam niet weet, kunt u het doen

sudo launchctl list

Als u de gewenste service nog steeds niet kunt vinden, probeert u deze uit te voeren zonder de rootidentiteit:

launchctl list

En u hoeft de service niet uit te laden en te laden.


2
2017-12-26 13:05



Ik heb dit geprobeerd en nu kan ik het niet gebruiken ssh van mijn Mac. Opnieuw opstarten lost niet op. Vervangen stop met start lost ook niet op. - P i
Ik heb dit geprobeerd en ik kan nog steeds naar mijn Mac ssh! - Michael
@ dmitriy-apollonin Het werkt niet, je moet gebruiken sudo unload /System/Library/LaunchDaemons/ssh.plist in plaats daarvan. - SebMa


sudo apachectl restart

Werkt met andere besturingssystemen en maakt ook deel uit van Apache.


1
2017-10-26 12:27



Hoewel het onderwerp apache in het bijzonder niet vermeldt, had ik op deze interpretatie moeten anticiperen .... Het spijt me, maar dat was niet wat ik zocht :) - conny
Ok, ik heb het httpd-onderdeel opgevangen, waarvoor het gebruik van apachectl de gemakkelijkere variant is :) - Sven♦


Voor het geval dat u op zoek bent naar launchctl reload, u kunt de shell-functie in uw definiëren ~/.bashrc/.zshrc Zoals ik deed:

function lctl {
    COMMAND=$1
    PLIST_FILE=$2
    if [ "$COMMAND" = "reload" ] && [ -n "$PLIST_FILE" ]
      then
        echo "reloading ${PLIST_FILE}.."
        launchctl unload ${PLIST_FILE}
        launchctl load ${PLIST_FILE}
      else
        echo "either command not specified or plist file is not defined"
    fi
}

Het uitvoeren van commando's lijkt op -> lctl reload <your-plist-name>.plist


1
2017-10-12 09:21





Er is een kleine en nuttige app voor deze genaamd Lingon. De freeware-editie van Lingon is hier  soms kan het herstarten van een service lastig zijn.

syslog -w

lezen helpt echter.


0
2018-03-08 13:34





ik weet het niet is dit is wat je zoekt, maar je zou het kunnen proberen top een eenvoudige opdracht die ik redelijk nuttig vind.


0
2018-04-18 19:11



maar dit toont alleen lopende procceses en ik denk niet dat je het kan starten / stoppen / herstarten - user411190
Het zou je kunnen laten stoppen met processen, maar niet zozeer beginnen. - chicks