如何自动重启因OOM而终止的systemd服务



如何自动重启因OOM而终止的systemd服务

我已经添加了一个重启,但我不确定这是否会在OOM上工作,我无法在我的本地开发盒上复制OOM,所以知道这个工作将是有帮助的。

[Service]
Restart=on-failure
RestartSec=1s

错误:

Main process exited, code=killed, status=9/KILL

阅读文档https://www.freedesktop.org/software/systemd/man/systemd.service.html看起来重启发生在不干净的退出代码,我认为状态9会在它下面,但请有人验证我的想法。

当一个进程终止时,它终止的性质将被它的父进程记录。对于由systemd启动的服务,父服务是systemd。

可以报告的可用替代方案是由于信号(以及哪个)或正常终止(以及伴随的退出状态)而终止。由"正常";我指的是被信号杀死的补码,不一定是干净的补码;或"successful".

用于进程管理的系统接口不提供任何其他选项,但是systemd本身也提供了对其管理的服务应用超时或使用看门狗计时器的功能,这可能导致服务因其中一个服务过期而终止(正如systemd所描述的那样)。

关于各种Restart设置行为的系统文档提供了很好的详细信息,说明哪些终止情况导致使用哪些Restart设置重新启动。由于SIGKILL而终止是问题中所呈现的信息,这将属于"不洁信号"。类别,如systemd所定义的那样。因此,按照文档,将服务的Restart属性配置为always,on-failure,on-abnormalon-abort中的任何一个都将导致systemd在由于SIGKILL而终止时自动重新启动该服务。

这些选项中的大多数在其他情况下也会产生自动重启,但是on-abort只会在由于不干净的信号而终止的情况下产生自动重启。(注意,虽然systemd认为SIGKILL不干净,但它认为SIGTERM是干净的。)

最新更新