我们认为以下指令将在 60 秒内尝试重启该进程 10 次(即每 6 秒一次):
respawn
respawn limit 10 60
但是这些指令会在进程崩溃后立即重新启动进程。因此它实际上可能在 1 秒内重生进程 10 次。
有没有办法配置我们的服务,以便当它崩溃时,它会尝试重生 10 次,每 6 秒一次?
答案1
Ubuntu Upstart Cookbook 有一个答案为了这:
如果某项作业指定了重生,但是您由于某种原因想要延迟重生,则只需使用后停止节:
respawn exec mydaemon post-stop exec sleep 10
现在,每次 mydaemon 以非零返回码退出时,该作业将休眠 10 秒,然后 Upstart 重新启动它。
对于真正的服务,您可能会使用停止后脚本节来执行检查,而不是简单地休眠。
说实话,我不确定是否以及为什么停止后仅在非零作业退出代码时调用,但这是手册建议的解决方案。您可以随时使用post-start script
并添加检查以使其成为sleep ...
条件。