Я хочу перезапустить процесс, отслеживаемый с помощью monit, когда контрольная сумма файла не удалась. В настоящее время я использую
check process prosody with pidfile /var/run/prosody/prosody.pid
depends certificate_file
start program "/etc/init.d/prosody start"
stop program "/etc/init.d/prosody stop"
restart program "/etc/init.d/prosody restart"
check file certificate_file with path /etc/prosody/certs/fullchain.pem
if changed checksum then exec "/usr/bin/monit restart prosody"
Но я бы хотел иметь команду вроде if changed checksum then restart prosody
вместо использования двоичного файла monit через exec
.
В restart
кажется, что действие ограничено перезапуском текущего отслеживаемого процесса, поэтому действие в check file
блок ничего не делает.
Проще говоря, действие начать сначала
check process prosody with pidfile /var/run/prosody/prosody.pid
depends certificate_file
start program "/etc/init.d/prosody start"
stop program "/etc/init.d/prosody stop"
restart program "/etc/init.d/prosody restart"
check file certificate_file with path /etc/prosody/certs/fullchain.pem
if changed checksum then restart
Перезапуск события будет распространен на все зависимости с журналом, аналогичным
[CEST Mar 27 11:57:30] error : 'certificate_file' checksum was changed for /etc/prosody/certs/fullchain.pem
[CEST Mar 27 11:57:30] info : 'certificate_file' trying to restart
[CEST Mar 27 11:57:30] info : 'prosody ' stop: /etc/init.d/prosody stop
[CEST Mar 27 11:57:30] info : 'prosody ' start: /etc/init.d/prosody start
Имейте в виду, что Monit будет продолжать запускать событие снова и снова с этой конфигурацией -> поэтому запускайте перезапуск постоянно.
Также кажется, Начало и стоп действие должен необходимо указать иначе ничего не делается (это может быть ошибкой). (Проверено с помощью monit 5.14)
РЕДАКТИРОВАТЬ: с обновленной версией Monit 5.21.0 поведение намного лучше, и нет бесконечного цикла перезапуска
[CEST Mar 27 13:47:22] info : 'certificate_file' trying to restart
[CEST Mar 27 13:47:22] info : 'prosody' stop: '/etc/init.d/prosody stop'
[CEST Mar 27 13:47:22] info : 'certificate_file' checksum has not changed
[CEST Mar 27 13:47:22] info : 'prosody' start: '/etc/init.d/prosody start'