我的系统包含一个任务,它打开一个网络套接字,接收来自网络的推送数据,处理它并将其写入磁盘或根据消息ping其他机器。此任务旨在永久运行,并且该服务旨在使此任务始终运行。但有时它会崩溃。在Linux上维护一个长时间运行的任务
保持此类任务的最佳做法是什么?假设任务在我们重新启动之前最多可以停留30秒即可。
一些明显的想法包括有一个看门狗进程检查以确保进程仍在运行。看门狗可能由cron
触发。但是它如何知道这个过程是否还活着?写一个pidfile? touch
心跳文件?如果机器陷入到看门狗运行速度快于心跳的地步,理想的解决方案不会持续启动更多的进程。
有没有标准的Linux工具呢?我可以想象一个使用消息队列的解决方案,但我不确定这是否是个好主意。
投票转移到超级用户,unix.se可能会更好。 – 2011-04-12 00:50:06