Shell 脚本在其中一个守护进程死亡时执行某些操作?

rac*_*ear 3 scripting shell daemon

我只需要构建两个在不同端口上运行的守护进程实例。假设它们都为某些应用程序提供关键任务。

当其中一个无法提供服务时,如何执行一些自动任务(例如 shell 脚本)来检查两个守护进程?

什么样的脚本可以始终检查守护程序的生命周期,并且如果其中一个守护程序意外停止,也许可以执行其他一些作业?

dry*_*jed 7

monit在这种情况下很棒 - 它在本地主机上运行,​​因此您不需要网络连接来重新启动守护程序(以防它失败,或者守护程序负责网络)。它在系统上的占用空间也很小,您可以使用它来监视其他守护进程/磁盘空间/等。以及。

创建一个启动/停止脚本(类似于在/etc/init.d/系统用于正常操作的运行级别中的那些并为其创建符号链接,确保您的守护进程将在重新启动时启动并在关闭时正确停止。如果您的守护进程没有 pidfile,请创建一种使用start-stop-daemon脚本。

之后,monit为您的守护程序安装并创建配置,如下所示:

使用 pidfile /var/run/daemond.pid 检查进程守护进程
    启动程序“/etc/init.d/daemond start”
    停止程序“/etc/init.d/daemond stop”
    如果端口 1234 失败,则在 10 个周期内键入 TCP 5 次,然后重新启动
    如果 3 个在 5 个周期内重新启动,则警报

此配置将确保如果守护进程在 tcp 端口 1234 上停止响应或停止运行,它将使用 init 脚本重新启动。monit还会通过电子邮件向您发送警报,或执行其他操作,具体取决于您的配置方式。只需查看monit(1)联机帮助页。