
Ich habe einen Launchd-Dienst mit der Bezeichnung 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 stoppen! Der naheliegende stop
Befehl funktioniert jedoch nicht. Stattdessen startet er den Dienst mit einer neuen PID neu:
$ 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 kündige ich den Dienst eigentlich?
Antwort1
Ein gestoppter Job wird, wenn er gestartet werden soll, sofort neu gestartet. Stattdessen müssen Sie den Dienst entladen:
launchctl unload homebrew.mxcl.postgresql
Um es dauerhaft zu deaktivieren, geben Sie zusätzlich den -w
Schalter an:
launchctl unload -w homebrew.mxcl.postgresql
Für Homebrew gibt es auchHomebrew-Dienste. So installieren Sie es:
brew tap homebrew/services
Anschließend können Sie Dienste einfacher starten und stoppen:
brew services start postgresql
brew services stop postgresql