Systemd не перезапускает monit после убийства

Это уже встроено. Чтобы снять снимок экрана, просто используйте SHIFT-Printscreen. Затем он позволит вам перетащить квадрат в желаемый регион.

0
задан 6 September 2017 в 22:03

4 ответа

Я полагаю, что добавление опции Restart в ваш служебный файл systemd обеспечит запуск, если не остановится командой systemctl stop:

Restart=[no | on-success | on-failure | on-abnormal | on-watchdog | on-abort | always ]

Информация:

нет: по умолчанию служба не будет перезапущена.

no: будет перезапущен только тогда, когда процесс обслуживания завершится чисто

отказ: будет перезапущен, когда процесс завершится с ненулевым кодом выхода

при сбое: будет перезапущен только в том случае, если сервисный процесс завершается из-за неперехваченного сигнала, не указанного как чистый статус выхода

on-watchdog: будет перезапущен, только если тайм-аут сторожевого таймера для службы истечет

on-watchdog: будет перезапущен независимо из-за того, что он вышел из строя или нет, завершился аномально сигналом или ударил тайм-аут

Restart = Настраивает, перезапускается ли служба при выходе из сервисного процесса, или тайм-аут достигнут. Сервисный процесс может быть основным сервисом, но он может также быть одним из процессов, указанных в ExecStartPre =, ExecStartPost =, ExecStop =, ExecStopPost = или ExecReload =. Когда смерть процесса является результатом работы systemd (например, остановки или перезагрузки службы), служба не будет перезапущена. Тайм-ауты включают отсутствие контрольного таймера «keep-alive ping» и запуск службы, перезагрузку и прекращение тайм-аута работы. Принимает один из следующих: отсутствие-на-неудачи, on-fail, on-annormal, on-watchdog, on-abort или всегда. Если установлено значение no (по умолчанию), служба не будет перезапущена. Если он установлен на успешный, он будет перезапущен только тогда, когда процесс обслуживания будет завершен. В этом контексте чистый выход означает код выхода 0 или один из сигналов SIGHUP, SIGINT, SIGTERM или SIGPIPE и, кроме того, состояния выхода и сигналы, указанные в SuccessExitStatus =. Если он установлен на отказ, служба будет перезапущена, когда процесс завершится с ненулевым кодом выхода, завершается сигналом (в том числе на дампе ядра, но исключая вышеупомянутые четыре сигнала), когда операция (например, служба перезагрузка), а также когда настроен тайм-аут настроенного сторожевого таймера. Если установлено на ненормальное значение, служба будет перезапущена, когда процесс будет завершен сигналом (включая дамп ядра, исключая вышеупомянутые четыре сигнала), когда время выполнения операции или когда тайм-аут сторожевого таймера запускается. Если он установлен на прерывание, служба будет перезапущена только в том случае, если сервисный процесс завершается из-за неперехваченного сигнала, не указанного как чистый статус выхода. Если установлено значение on-watchdog, служба будет перезапущена, только если тайм-аут сторожевого таймера для службы истекает. Если установлено всегда, служба будет перезапущена независимо от того, вышла ли она чисто или нет, завершилась ненормально сигналом или ударила таймаут.

Источник:

https://www.freedesktop.org/software/systemd /man/systemd.service.html

1
ответ дан 18 July 2018 в 07:19

RemainAfterExit вариант настройки сделал трюк

После нескольких часов экспериментов с конфигурацией systemd я обнаружил решение, которое работает:

sudo systemctl edit monit

Затем заполните следующую конфигурацию:

[Service] PIDFile=/var/run/monit.pid Restart=always RemainAfterExit=no

И перезагрузите демона:

sudo systemctl daemon-reload sudo systemctl restart monit

Теперь systemd перезапускает мою службу monit, когда я ее убиваю:

ps aux | grep monit root 7822 0.0 0.2 112476 2872 ? Sl 19:09 0:00 /usr/bin/monit -c /etc/monit/monitrc lookpla+ 7855 0.0 0.0 14212 1008 pts/0 S+ 19:12 0:00 grep --color=auto monit sudo kill 7822 root 7872 0.0 0.2 112476 2964 ? Sl 19:13 0:00 /usr/bin/monit -c /etc/monit/monitrc lookpla+ 7875 0.0 0.0 14212 984 pts/0 S+ 19:13 0:00 grep --color=auto monit
0
ответ дан 18 July 2018 в 07:19

Я полагаю, что добавление опции Restart в ваш служебный файл systemd обеспечит запуск, если не остановится командой systemctl stop:

Restart=[no | on-success | on-failure | on-abnormal | on-watchdog | on-abort | always ]

Информация:

нет: по умолчанию служба не будет перезапущена.

no: будет перезапущен только тогда, когда процесс обслуживания завершится чисто

отказ: будет перезапущен, когда процесс завершится с ненулевым кодом выхода

при сбое: будет перезапущен только в том случае, если сервисный процесс завершается из-за неперехваченного сигнала, не указанного как чистый статус выхода

on-watchdog: будет перезапущен, только если тайм-аут сторожевого таймера для службы истечет

on-watchdog: будет перезапущен независимо из-за того, что он вышел из строя или нет, завершился аномально сигналом или ударил тайм-аут

Restart = Настраивает, перезапускается ли служба при выходе из сервисного процесса, или тайм-аут достигнут. Сервисный процесс может быть основным сервисом, но он может также быть одним из процессов, указанных в ExecStartPre =, ExecStartPost =, ExecStop =, ExecStopPost = или ExecReload =. Когда смерть процесса является результатом работы systemd (например, остановки или перезагрузки службы), служба не будет перезапущена. Тайм-ауты включают отсутствие контрольного таймера «keep-alive ping» и запуск службы, перезагрузку и прекращение тайм-аута работы. Принимает один из следующих: отсутствие-на-неудачи, on-fail, on-annormal, on-watchdog, on-abort или всегда. Если установлено значение no (по умолчанию), служба не будет перезапущена. Если он установлен на успешный, он будет перезапущен только тогда, когда процесс обслуживания будет завершен. В этом контексте чистый выход означает код выхода 0 или один из сигналов SIGHUP, SIGINT, SIGTERM или SIGPIPE и, кроме того, состояния выхода и сигналы, указанные в SuccessExitStatus =. Если он установлен на отказ, служба будет перезапущена, когда процесс завершится с ненулевым кодом выхода, завершается сигналом (в том числе на дампе ядра, но исключая вышеупомянутые четыре сигнала), когда операция (например, служба перезагрузка), а также когда настроен тайм-аут настроенного сторожевого таймера. Если установлено на ненормальное значение, служба будет перезапущена, когда процесс будет завершен сигналом (включая дамп ядра, исключая вышеупомянутые четыре сигнала), когда время выполнения операции или когда тайм-аут сторожевого таймера запускается. Если он установлен на прерывание, служба будет перезапущена только в том случае, если сервисный процесс завершается из-за неперехваченного сигнала, не указанного как чистый статус выхода. Если установлено значение on-watchdog, служба будет перезапущена, только если тайм-аут сторожевого таймера для службы истекает. Если установлено всегда, служба будет перезапущена независимо от того, вышла ли она чисто или нет, завершилась ненормально сигналом или ударила таймаут.

Источник:

https://www.freedesktop.org/software/systemd /man/systemd.service.html

1
ответ дан 24 July 2018 в 18:46
  • 1
    Выполнение sudo systemctl daemon-reload после изменения файла было отсутствующим фрагментом - вы могли бы упомянуть об этом. – dessert 6 September 2017 в 22:21
  • 2
    Затем OP также должен добавить Type=forking, поскольку это демон – George Udosen 6 September 2017 в 22:23
  • 3
    @dessert Я попытался просмотреть все параметры конфигурации для monit с sudo systemctl show monit и обнаружил, что RemainAfterExit=yes. После того, как я сменил его на no systemd, я начал правильно перезапускать мой текущий процесс после его смерти – Hirurg103 6 September 2017 в 22:29

RemainAfterExit вариант настройки сделал трюк

После нескольких часов экспериментов с конфигурацией systemd я обнаружил решение, которое работает:

sudo systemctl edit monit

Затем заполните следующую конфигурацию:

[Service] PIDFile=/var/run/monit.pid Restart=always RemainAfterExit=no

И перезагрузите демона:

sudo systemctl daemon-reload sudo systemctl restart monit

Теперь systemd перезапускает мою службу monit, когда я ее убиваю:

ps aux | grep monit root 7822 0.0 0.2 112476 2872 ? Sl 19:09 0:00 /usr/bin/monit -c /etc/monit/monitrc lookpla+ 7855 0.0 0.0 14212 1008 pts/0 S+ 19:12 0:00 grep --color=auto monit sudo kill 7822 root 7872 0.0 0.2 112476 2964 ? Sl 19:13 0:00 /usr/bin/monit -c /etc/monit/monitrc lookpla+ 7875 0.0 0.0 14212 984 pts/0 S+ 19:13 0:00 grep --color=auto monit
0
ответ дан 24 July 2018 в 18:46

Другие вопросы по тегам:

Похожие вопросы: