Bash 脚本 - 维护多个实例运行



如何确保某个程序的多个实例始终在运行?

假设我想确保某个程序的 4 个实例始终在运行。如果一个实例被终止,则应启动新实例。如果正在运行 5 个实例,则应杀死一个实例。

这不是一个真正的 shell 问题,因为无论您使用哪种 shell,方法都是相同的。

我认为最干净的解决方案是拥有一个"看门狗",它检查正在运行的进程(使用 ps ),并在必要时启动一个新进程或杀死不必要的进程。

一种方法 - 我在类似情况下使用过 - 是编写一个 cron 作业,它定期(比如:每 5 分钟)启动看门狗并让它做他的工作。

如果这样的间隔对于您的情况来说太长(即,如果您需要比每分钟更频繁地检查它),您可以让看门狗在循环中连续运行。尽管如此,您仍然需要一个 cron 作业,它不时轮流控制看门狗 - 以防看门狗死亡。在这种情况下,您可以考虑将其作为守护程序运行。

最新更新