Monit的第二个“不存在”优先于第一个

时间:2016-10-25 12:28:56

标签: monitoring monit

我有一个使用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:

2 个答案:

答案 0 :(得分:0)

我的猜测是,根据文档,默认操作已经是重启过程,并且您通过exec操作覆盖了该操作

更清洁的方法是在somescript.sh内添加重启脚本。

如果您不想这样做,您也可以将这两个动作合并为一个,如下所示:

if does not exist then exec "/etc/init.d/xyz restart && /opt/somescript.sh"

答案 1 :(得分:0)

我相信monit不允许你两次使用相同的语句。您必须在somescript.sh

重新启动流程时编写脚本