![systemd 托管服务的受控重启?](https://linux22.com/image/15490/systemd%20%E6%89%98%E7%AE%A1%E6%9C%8D%E5%8A%A1%E7%9A%84%E5%8F%97%E6%8E%A7%E9%87%8D%E5%90%AF%EF%BC%9F.png)
systemd 托管服务的受控重启?我有一个服务,如果失败,我希望默认重新启动,但如果遇到特定条件则不重新启动。使用 Restart=ab-normal 或 Restart=always 有效,但我想在遇到特定条件时停止重新启动。服务的完整使用应始终重新启动,除非与服务相关的适用硬件发生故障。不幸的是,Restart=ab-normal 或 Restart=always 似乎没有任何智能?即使我编写代码逻辑来返回特定的退出代码(例如 255),Restart= 参数也会忽略此类,并且通过代码似乎无法找到在我的代码中控制此代码的方法?我想什么或需要什么是重新启动=总是除非退出代码= 255,类型的东西?有什么方法可以实现这个概念吗?
答案1
systemd
服务有一个重新启动阻止退出状态选项:
获取退出状态定义列表,当主服务进程返回该列表时,将阻止自动服务重新启动,无论使用 .config 配置的重新启动设置如何
Restart=
。退出状态定义可以是数字退出代码或终止信号名称,并用空格分隔。默认为空列表,因此默认情况下,配置的重新启动逻辑中不排除任何退出状态。
因此,如果您的服务可以修改为返回特定的退出代码(例如您问题中的 255),您可以设置
RestartPreventExitStatus=255