Я позволил systemd загрузить monit при запуске
sudo systemctl enable monit
sudo systemctl restart monit
ps aux | grep monit
root 6843 0.0 0.2 112492 2948 ? Sl 18:19 0:00 /usr/bin/monit -c /etc/monit/monitrc
lookpla+ 6857 0.0 0.0 14212 1008 pts/0 S+ 18:21 0:00 grep --color=auto monit
Но когда я уничтожаю monit, он не запускается снова:
sudo kill 6843
ps aux | grep monit
lookpla+ 6862 0.0 0.1 14212 1028 pts/0 S+ 18:23 0:00 grep --color=auto monit
Systemctl показывает, что monit активен, но выходится
sudo systemctl status monit.service
● monit.service - LSB: service and resource monitoring daemon Loaded: loaded (/etc/init.d/monit; generated; vendor preset: enabled) Drop-In: /etc/systemd/system/monit.service.d └─override.conf Active: active (exited) since Wed 2017-09-06 18:19:17 UTC; 4min 29s ago Docs: man:systemd-sysv-generator(8) Process: 6830 ExecStop=/etc/init.d/monit stop (code=exited, status=0/SUCCESS) Process: 6835 ExecStart=/etc/init.d/monit start (code=exited, status=0/SUCCESS) Main PID: 6843 (code=exited, status=0/SUCCESS) Sep 06 18:19:17 localhost systemd[1]: Stopped LSB: service and resource monitoring daemon. Sep 06 18:19:17 localhost systemd[1]: Starting LSB: service and resource monitoring daemon... Sep 06 18:19:17 localhost monit[6835]: * Starting daemon monitor monit Sep 06 18:19:17 localhost monit[6835]: ...done. Sep 06 18:19:17 localhost systemd[1]: monit.service: PID file /run/monit.pid not readable (yet?) after start: No such file or directory Sep 06 18:19:17 localhost systemd[1]: Started LSB: service and resource monitoring daemon.
Вы могли помочь мне настроить systemd, таким образом, он перезапустит monit после того, как он был уничтожен?
Я использую человечность 17.04
Я верю добавлению Restart
опция к Вашему systemd
сервисный файл гарантировал бы, что это добирается, запускаются, когда в них не заходят systemctl stop
команда:
Restart=[no | on-success | on-failure | on-abnormal | on-watchdog | on-abort | always ]
Информация:
нет: значение по умолчанию, сервис не будет перезапущен
на успехе: будет перезапущен только, когда сервисный процесс выйдет чисто
на отказе: будет перезапущен, когда процесс выйдет с ненулевым кодом выхода
на аварийном прекращении работы: будет перезапущен, только если сервисный процесс выходит из-за непойманного сигнала, не указанного как чистый статус выхода
на сторожевом таймере: будет перезапущен, только если сторожевой тайм-аут для сервиса истекает
всегда: будет перезапущен независимо от того, вышло ли это чисто или нет, было завершено неправильно сигналом или поражало тайм-аут
Перезапуск = Настраивает, должен ли сервис быть перезапущен, когда сервисный процесс выходы, будет уничтожен, или тайм-аут достигнут. Сервисный процесс может быть основным сервисным процессом, но это может также быть один из процессов, указанных с ExecStartPre =, ExecStartPost =, ExecStop =, ExecStopPost =, или ExecReload =. Когда смерть процесса будет результатом systemd операции (например, сервисная остановка или перезапуск), сервис не будет перезапущен. Тайм-ауты включают пропавших без вести сторожевого таймера "активный ping" крайний срок, и сервис запускают, перезагружают, и операционные тайм-ауты остановки.
Берет один из не, на успехе, на отказе, на-аварийном, на сторожевом таймере, на аварийном прекращении работы, или всегда. Если установлено на не (значение по умолчанию), сервис не будет перезапущен. Если установлено на на успехе, это будет перезапущено только, когда сервисный процесс выйдет чисто. В этом контексте чистый выход означает код выхода 0 или один из сигналов SIGHUP, SIGINT, SIGTERM или SIGPIPE, и дополнительно, статусы выхода и сигналы, указанные в SuccessExitStatus =. Если установлено на на отказе, сервис будет перезапущен, когда выходы процесса с ненулевым кодом выхода, будет завершен сигналом (включая на дампе ядра, но, исключая вышеупомянутые четыре сигнала), когда операция (такая как сервисная перезагрузка) испытывает таймаут, и когда настроенный сторожевой тайм-аут инициирован. Если установлено на на-аварийном, сервис будет перезапущен, когда процесс будет завершен сигналом (включая на дампе ядра, исключая вышеупомянутые четыре сигнала), когда операция испытывает таймаут, или когда сторожевой тайм-аут инициирован. Если установлено на на аварийном прекращении работы, сервис будет перезапущен, только если сервисный процесс выходит из-за непойманного сигнала, не указанного как чистый статус выхода. Если установлено на на сторожевом таймере, сервис будет перезапущен, только если сторожевой тайм-аут для сервиса истекает. Если установлено на всегда, сервис будет перезапущен независимо от того, вышел ли он чисто или нет, был завершен неправильно сигналом или поражал тайм-аут.
Источник:
https://www.freedesktop.org/software/systemd/man/systemd.service.html
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