systemd 仅在崩溃后自动重新启动服务

systemd 仅在崩溃后自动重新启动服务

是否可以让 systemd 仅在服务不返回 0 的情况下自动重新启动该服务?据我所知,当发生正确的结束时,服务返回 0 - 例如,当用户主动终止服务(例如关闭程序)时。我很想告诉 systemd 在手动终止服务时不要重新启动该服务。那可能吗?

答案1

Restart=on-failure是的,您可以在单位区域内使用Service

systemd 的文档(也可在man 5 systemd.service):

重新启动=

[...]

如果设置为on-failure,则当进程以非零退出代码退出、被信号终止(包括核心转储,但不包括上述四个信号)、当操作(例如服务重新加载)次数时,服务将重新启动出,以及何时触发配置的看门狗超时。如果设置为on-abnormal,则当进程被信号终止时(包括core dump,不包括上述四个信号)、操作超时或触发看门狗超时时,服务将重新启动。

[...]

对于长时间运行的服务,建议选择将此设置为on-failure,以便通过尝试从错误中自动恢复来提高可靠性。对于能够自行选择终止(并避免立即重新启动)的服务,on-abnormal是另一种选择。

顺便说一句,您可以使用 明确告诉 systemd 停止服务systemctl stop,而不是当前手动终止进程的方法,这将绕过任何Restart=设置。

相关内容