systemd 托管服务的受控重启?

systemd 托管服务的受控重启?

systemd 托管服务的受控重启?我有一个服务,如果失败,我希望默认重新启动,但如果遇到特定条件则不重新启动。使用 Restart=ab-normal 或 Restart=always 有效,但我想在遇到特定条件时停止重新启动。服务的完整使用应始终重新启动,除非与服务相关的适用硬件发生故障。不幸的是,Restart=ab-normal 或 Restart=always 似乎没有任何智能?即使我编写代码逻辑来返回特定的退出代码(例如 255),Restart= 参数也会忽略此类,并且通过代码似乎无法找到在我的代码中控制此代码的方法?我想什么或需要什么是重新启动=总是除非退出代码= 255,类型的东西?有什么方法可以实现这个概念吗?

答案1

systemd服务有一个重新启动阻止退出状态选项:

获取退出状态定义列表,当主服务进程返回该列表时,将阻止自动服务重新启动,无论使用 .config 配置的重新启动设置如何Restart=。退出状态定义可以是数字退出代码或终止信号名称,并用空格分隔。默认为空列表,因此默认情况下,配置的重新启动逻辑中不排除任何退出状态。

因此,如果您的服务可以修改为返回特定的退出代码(例如您问题中的 255),您可以设置

RestartPreventExitStatus=255

相关内容