【问题标题】:Rerun a process in Monit if process stops如果进程停止,则在 Monit 中重新运行进程
【发布时间】:2013-11-17 04:36:47
【问题描述】:

我有一个这样的脚本:

#!/usr/bin/php
<?php
file_put_contents('/home/vagrant/sleep.pid', getmypid());
sleep(9);
exit(0);

我想编写我的 Monit 配置,以确保此应用程序始终运行。这是我的监控配置:

set daemon 5
check process program with pidfile /home/vagrant/sleep.pid
   start program = "/usr/bin/php /home/vagrant/myphp.php"

但在我的程序退出后,Monit 不会尝试再次运行它。这有点道理,但我想知道是否有任何方法可以告诉 Monit 重新运行该过程。

【问题讨论】:

    标签: unix monit


    【解决方案1】:

    在玩了更多的 Monit 之后,我发现我没有正确运行 Monit。

    首先您需要将以下配置添加到您的监控文件中:

    set httpd port 2812 and allow monit:monit
    set daemon 5
    check process program with pidfile /home/vagrant/sleep.pid
        start program = "/usr/bin/php /home/vagrant/myphp.php"
    

    然后使用以下命令运行监控:

    monit -c monit.conf
    

    现在Monit在后台运行,如果它死了重新运行进程,你可以重新启动或启动特定程序:

    monit -c monit.conf start all
    

    monit -c monit.conf stop my_role
    

    【讨论】: