configurationsystemd以重新启动超时进程

我们有一个相当复杂的系统服务Type=notify 。 偶尔,服务将在启动/重新启动时挂起,并在systemd失败以接收sd_notify调用之后进入failed状态。 我们希望在这种情况下重新启动服务 – 很可能是第二次正确启动。

但是, systemd.service(5)手册页说:

当进程死亡是系统运行(例如服务停止或重启)的结果时,服务将不会重新启动。

有没有办法在系统configuration中克服这个限制? 否则,我们将不得不监视守护进程状态,并在每次卡住时手动重启它,或者为此开发某种监督脚本,这可能会在系统中引入更多的失败点。

不,没有可能

这是一个安全措施,以避免在手动干预后出现configuration文件损坏的情况下重启进程。

有Restart =选项,但是为了工作,进程必须在之前启动一次。

所以更好的方法是检查为什么你的服务有时会挂在启动或重新启动并解决这个问题。

如果你不能这样做,你可以编写一个简单的shell封装器,用无限循环启动服务,或者更好的方法是build立一个像Monit这样的服务监控程序的本地实例。