Я хочу, чтобы monit контролировал мою службу, и после ее остановки я хочу, чтобы компьютер перезагрузился. У процесса нет определенного порта, который я могу отслеживать. Вот что я сделал:
check process chat with pidfile /var/run/chat.pid
start program = "/etc/init.d/chat start"
stop program = "/etc/init.d/chat stop"
if changed ppid then exec /sbin/reboot
Я пробовал все, но это только перезапускал мою службу.
Любое предложение.
Я думаю, что ppid может относиться к родительскому идентификатору, который всегда будет 1 для службы, поэтому используйте
check process chat with pidfile /var/run/chat.pid
start program = "/etc/init.d/chat start"
stop program = "/etc/init.d/chat stop"
if changed pid then exec /sbin/reboot
вместо. Я тестировал это с помощью некоторой локальной службы, и у меня это работает, перезапуск службы приводит к перезагрузке сервера. (хорошо ли это вообще - другой вопрос ... ;-)
со страницы руководства ....
ПИД-ТЕСТИРОВАНИЕ
Monit может проверить идентификационный номер процесса (pid) на наличие изменений. Этот тест является неявным, и по умолчанию Monit отправит предупреждение в случае сбоя.
Синтаксис оператора pid: IF CHANGED PID [[] CYCLES] THEN action action - это выбор «ALERT», «RESTART», «START», «STOP», «EXEC», «MONITOR» или «UNMONITOR». .
Этот тест полезен для обнаружения возможных перезапусков процесса, произошедших в промежутке времени между двумя циклами тестирования Monit. В случае, если перезапуск был быстрым и процесс обеспечивает ожидаемое обслуживание (т.е. все тесты прошли успешно), вы получите уведомление о том, что процесс был заменен.
Например, демон sshd может перезапускаться очень быстро, поэтому, если кто-то изменит его конфигурацию и выполнит перезапуск sshd вне контроля Monit, вы получите уведомление о том, что процесс был заменен новым экземпляром (или вы можете при желании выполнить некоторые другие действия, такие как превентивная остановка sshd ).
Другой пример - MySQL Cluster, у которого есть собственный сторожевой таймер с возможностью перезапуска процесса. Вы можете использовать Monit для избыточного мониторинга.
Пример:
проверьте процесс sshd с помощью pidfile /var/run/sshd.pid, если изменился pid, затем exec "/ my / script"
PPID ТЕСТИРОВАНИЕ
Monit может проверить идентификационный номер родительского процесса (ppid) процесса на наличие изменений. Этот тест является неявным, и по умолчанию Monit отправит предупреждение в случае сбоя.
Синтаксис оператора ppid: IF CHANGED PPID [[] CYCLES] THEN action action - это выбор «ALERT», «RESTART», «START», «STOP», «EXEC», «MONITOR» или «UNMONITOR». .
Этот тест полезен для обнаружения изменений родительского процесса.
Пример:
проверьте процесс myproc с помощью pidfile /var/run/myproc.pid, если изменился ppid, затем exec "/ my / script"
Отслеживать произвольные процессы извне очень сложно; И наоборот, управлять запущенными вами процессами несложно.
Я предлагаю вам изучить запустить его, альтернативный демон инициализации для серверов.