我想监视我的服务,一旦停止,然后我想要电脑重新启动。 这个过程没有一个我可以监控的端口。 这就是我所做的:
check process chat with pidfile /var/run/chat.pid start program = "/etc/init.d/chat start" stop program = "/etc/init.d/chat stop" if changed ppid then exec /sbin/reboot
我尝试了所有的东西,但只是重新启动我的服务。
任何build议。
我认为ppid可能会引用父ID,这将始终为1服务,所以使用
check process chat with pidfile /var/run/chat.pid start program = "/etc/init.d/chat start" stop program = "/etc/init.d/chat stop" if changed pid then exec /sbin/reboot
代替。 我testing了一些本地服务,它适用于我,重新启动服务导致服务器重新启动。 (这是否是一个好主意通常是另一回事…… 😉
从手册页….
PIDtesting
Monit可以testing进程的进程标识号(pid)以进行更改。 这个testing是隐含的,Monit会在默认情况下发送警报。
pid语句的语法是:IF CHANGED PID [[] CYCLES] THEN action action是“ALERT”,“RESTART”,“START”,“STOP”,“EXEC”,“MONITOR”或“UNMONITOR” 。
此testing对于检测在两个Monittesting周期之间的时间范围内发生的可能的过程重启很有用。 如果重启过程很快,并且进程提供了预期的服务(即所有的testing都成功),则会通知您该进程已被replace。
例如,sshd守护进程可以很快重启,因此如果有人改变它的configuration,并且在Monit的控制之外进行sshd restart,你会被通知这个进程被一个新的实例replace(或者你可以select做一些其他的操作,比如预防性地停止sshd )。
另一个例子是一个拥有自己的看门狗的MySQL Cluster,具有进程重启的能力。 您可以使用Monit进行冗余监视。
例:
检查进程sshd与pidfile /var/run/sshd.pid如果更改pid然后exec“/ my / script”
PPIDtesting
Monit可以testing进程的进程父进程标识号(ppid)以进行更改。 这个testing是隐含的,Monit会在默认情况下发送警报。
ppid语句的语法是:IF CHANGED PPID [[] CYCLES] THEN操作是“ALERT”,“RESTART”,“START”,“STOP”,“EXEC”,“MONITOR”或“UNMONITOR” 。
此testing对于检测父进程的更改非常有用。
例:
用pidfile检查进程myproc /var/run/myproc.pid if ppid then exec“/ my / script”
从外部监视任意进程是非常困难的。 相反,控制你开始的进程是微不足道的。
我build议你调查一下服务器的替代init守护进程runit 。