Wie kann ich einen Launchd-Dienst stoppen?

Wie kann ich einen Launchd-Dienst stoppen?

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 stopBefehl 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 -wSchalter 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

verwandte Informationen