当文件的校验和失败时,我想重新启动由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而不是通过exec使用monit二进制。
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将继续使用此configuration一次又一次地触发事件 – >因此触发器会不断重启。
此外,似乎必须指定开始和停止行动,否则什么都不做(可能是一个错误)。 (经testing5.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'