如何确保某些程序的多个实例始终在运行?
假设我想确保某个程序的4个实例始终在运行。 如果一个实例被杀死,则应该启动一个实例。 如果有5个实例正在运行,则应该杀死一个。
答案 0 :(得分:1)
这不是一个shell问题,因为无论你使用哪个shell,方法都是一样的。
我认为最干净的解决方案是拥有一个“监视程序”,它会检查正在运行的进程(使用ps
),并在必要时启动新进程或杀死不必要的进程。
我在类似情况下使用的一种方法是写一个cron作业,定期(比如说:每5分钟一次)启动看门狗并让它完成他的工作。
如果这种间隔时间过长(例如,如果你需要比每分钟更频繁地检查一次),你可以让看门狗在一个循环中连续运行。不过,你还需要一个cron工作,它会不时控制看门狗 - 以防看门狗死机。在这种情况下,您可以考虑将其作为daemon运行。