Wie kann ich einen launchd-Dienst beenden?

590
jameshfisher

Ich habe einen Launchd-Service mit Label homebrew.mxcl.postgresql:

$ launchctl list homebrew.mxcl.postgresql { "LimitLoadToSessionType" = "Aqua"; "StandardErrorPath" = "/usr/local/var/log/postgres.log"; "Label" = "homebrew.mxcl.postgresql"; "TimeOut" = 30; "OnDemand" = false; "LastExitStatus" = 0; "PID" = 5436; "Program" = "/usr/local/opt/postgresql/bin/postgres"; "ProgramArguments" = ( "/usr/local/opt/postgresql/bin/postgres"; "-D"; "/usr/local/var/postgres"; ); }; 

Ich möchte diesen Dienst einstellen! Der offensichtliche stopBefehl funktioniert jedoch nicht. Stattdessen wird der Dienst mit einer neuen PID neu gestartet:

$ launchctl stop homebrew.mxcl.postgresql $ launchctl list homebrew.mxcl.postgresql { "LimitLoadToSessionType" = "Aqua"; "StandardErrorPath" = "/usr/local/var/log/postgres.log"; "Label" = "homebrew.mxcl.postgresql"; "TimeOut" = 30; "OnDemand" = false; "LastExitStatus" = 0; "PID" = 5819; "Program" = "/usr/local/opt/postgresql/bin/postgres"; "ProgramArguments" = ( "/usr/local/opt/postgresql/bin/postgres"; "-D"; "/usr/local/var/postgres"; ); }; 

Wie bringe ich den Dienst tatsächlich an?

1

1 Antwort auf die Frage

2
Daniel B

Ein gestoppter Job wird sofort neu gestartet, wenn er gestartet werden soll. Stattdessen müssen Sie den Dienst entladen:

launchctl unload homebrew.mxcl.postgresql 

Um es dauerhaft zu deaktivieren, geben Sie auch den -wSchalter an:

launchctl unload -w homebrew.mxcl.postgresql 

Für Homebrew gibt es auch Homebrew-Services . Um es zu installieren:

brew tap homebrew/services 

Dann können Sie Dienste einfacher starten und stoppen:

brew services start postgresql brew services stop postgresql