当文件的校验和改变时,使用监视重新启动进程

当文件的校验和失败时,我想重新启动由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'