用于C程序的PID文件monit

我如何创build一个用于监视C程序的pid文件,以及如何使用监视监视该C程序?

备用解决scheme:不要使用monit。 正确编写守护进程是困难的 ,根据我的经验,使用进程pipe理系统为守护进程(对于守护进程而言,我并不是那里唯一的select,但是我尝试过所有守护进程我不断回到守护神工具)。 这样做的好处很多:

  • 守护是困难的正确地守护程序是困难的 (不是“multithreading”困难,但至less“你会得到它可怕的错误前20次”困难)。 为什么当别人已经为你做了这些事的时候,为了浪费你的时间编写(并经常debugging)不会增加业务价值的代码呢?
  • PID文件吸 :他们是活泼的(有一段时间,当进程正在运行,但PID文件不是),不保证是准确的(当守护进程死亡,另一个进程采取它的PID,它使事情更复杂),他们需要文件系统访问(可能是你不想让非特权程序有权访问的地方)。
  • 这不是monit :我花了8个月的时间被monit踢了一个头,它有很多的想法,devise缺陷,错误和其他的疯狂。 我会离开工作,而不是再次使用监视 – 我对此感到非常强烈。

我认为Monit仍然是一个有用的工具。 没有太多可靠的select。

至于C程序,你真的应该考虑进程的守护进程 。 这是正确的方法。 Monit能够监视进程名称模式,而不是PID文件。 在一个捏,你可以有一个像下面这样的Monit设置,假设程序的名字是“c_program”,并且有一个单一的实例:

check process c_program matching "c_program" start program = "/path/to/c_program" stop program = "killall c_program"