1

У меня есть сервис запуска с меткой 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";
    );
};

Как мне на самом деле остановить службу?

1 ответ1

3

Остановленная работа будет немедленно перезапущена, если она должна быть запущена. Вместо этого вы должны выгрузить сервис:

launchctl unload homebrew.mxcl.postgresql

Чтобы навсегда отключить его, также укажите ключ -w :

launchctl unload -w homebrew.mxcl.postgresql

Для Homebrew есть также услуги homebrew. Чтобы установить его:

brew tap homebrew/services

Тогда вам будет проще запускать и останавливать сервисы:

brew services start postgresql
brew services stop postgresql

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .