我有一个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超时和虚假查杀。