我有一个使用Monit进行监控的流程。如果由于某种原因进程死亡,我想使用shell脚本发送Slack通知并重新启动它。此行为虽然不适用于“不存在”指令。执行最后一个,忽略前一个。例如下面的代码:
check process xyz with pidfile /var/run/xyz.pid
start program = "/etc/init.d/xyz start" with timeout 60 seconds
stop program = "/etc/init.d/xyz stop"
if does not exist then restart
if does not exist then exec "/opt/somescript.sh"
它执行脚本但不重启。从文档中看,它的行为方式也是如此。任何其他方式来实现这一点。文档参考(不完全清楚但类似于实际行为):
If not defined, it defaults to a restart action.
You can override the default action with the following statement:
答案 0 :(得分:0)
我的猜测是,根据文档,默认操作已经是重启过程,并且您通过exec
操作覆盖了该操作
更清洁的方法是在somescript.sh
内添加重启脚本。
如果您不想这样做,您也可以将这两个动作合并为一个,如下所示:
if does not exist then exec "/etc/init.d/xyz restart && /opt/somescript.sh"
答案 1 :(得分:0)
我相信monit不允许你两次使用相同的语句。您必须在somescript.sh
。