【发布时间】:2011-04-12 00:44:11
【问题描述】:
我的系统包含一个任务,它打开一个网络套接字,接收来自网络的推送数据,对其进行处理,然后将其写入磁盘或根据消息 ping 其他机器。该任务旨在永远运行,并且该服务旨在让该任务始终运行。但有时它会崩溃。
让这样的任务保持活力的最佳做法是什么?假设在我们重新启动之前,该任务最多可以停止 30 秒。
一些明显的想法包括有一个看门狗进程来检查以确保进程仍在运行。看门狗可以由cron 触发。但它如何知道进程是否存在?写一个pidfile? touch 心跳文件?如果机器陷入到看门狗运行速度快于心跳的程度,理想的解决方案不会持续启动更多进程。
有没有标准的 linux 工具可以解决这个问题?我可以想象一个使用消息队列的解决方案,但我不确定这是否是个好主意。
【问题讨论】:
-
投票转为超级用户,unix.se 可能会更好。