web-dev-qa-db-ja.com

起動したサービスを停止するにはどうすればよいですか?

ラベル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";
    );
};

このサービスをやめたい!ただし、明らかなstopコマンドは機能しません。代わりに、新しいPIDでサービスを再起動します。

$ 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";
    );
};

実際にサービスを停止するにはどうすればよいですか?

2
jameshfisher

停止したジョブは、開始することになっている場合、すぐに再開されます。代わりに、サービスをアンロードする必要があります。

launchctl unload homebrew.mxcl.postgresql

永続的に無効にするには、-wスイッチも指定します。

launchctl unload -w homebrew.mxcl.postgresql

Homebrewの場合、 homebrew-services もあります。それをインストールするには:

brew tap homebrew/services

次に、サービスをより簡単に開始および停止できます。

brew services start postgresql
brew services stop postgresql
3
Daniel B