Monit – 守护进程的非守护进程?

我有一个ruby进程不作为守护进程运行(它在前台运行),但可以生成一个pid文件。 我的问题是,Monit总是期望监视后台/守护进程?

过去我使用了Bluepill,那是默认行为:

请注意,由于我们指定了一个PID文件和启动命令,bluepill假设进程将自我守护。 如果我们希望bluepill为我们提供守护进程,我们可以做(注意我们仍然需要指定一个PID文件):process.daemonize = true

有没有类似的monit? AFAIK,只要进程(不pipe是否守护进程)都可以创build一个PID文件,Monit会检测它是否自我守护,并且不会守护进程,反之亦然。

谢谢

它可以正常工作monit ..你可以让它检查进程的PID文件,基本上monit正在做的是做

ps aux | grep pid# 

如果它在那里,它认为它正在运行。 如果你没有一个PID文件,你也可以通过类似的方式来检查一个进程

 check process myprocessname matching "myprocessname" 

这几乎是一个

 ps aux | grep myprocessname 

简单的方法是deamonize你的非deamon进程。 也就是说,创buildshell脚本:

 #!/bin/sh /usr/local/bin/your_program < /dev/null & 

然后使用该脚本作为守护进程运行。 它会在后台启动你的程序(这将创buildPID文件),然后立即返回控制,从而避免monit超时和虚假查杀。