Restart=on-abort 在 systemd 服务中意味着什么?

Restart=on-abort 在 systemd 服务中意味着什么?

我正在使用一项服务,但它意外终止(停止)。我想让它无论如何停止都自动重新启动!它已配置Restart=on-abort且未重新启动。我没有编写该服务,它来自另一个供应商,因此虽然我想追踪服务崩溃的根本原因,但我还需要一个解决方案来保持系统运行,直到找到根本原因。该服务每天会死掉零到三次,所以不会太频繁。

当前服务设置为Restart=on-abort服务文件中定义的/etc/systemd/system/someone-elses.service

那么是什么Restart=on-abort意思呢?

我进行了搜索并了解 restart= 的不同值的含义,但在手册页中找不到任何内容:

答案1

systemd.service 可以配置为根据多种条件重新启动服务。 这个 systemctl 手册页对原因有很好的解释,并且原因包含在这个答案中,因此这个答案可以独立存在。

的定义Restart=on-abort仅当服务进程因未捕获的信号未指定为干净退出状态而退出时,服务才会重新启动。 这意味着除 SIGHUP、SIGINT、SIGTERM 或 SIGPIPE 之外的信号。这 4 个信号被描述为干净的信号通过 systemctl 手册页。

就我而言,我实际上想要,Restart=always因为无论进程如何终止或退出,我都希望它重新启动。该属性RestartSec=15s对我来说很重要,因为我希望在重新启动之间有一段时间以防止持续重新启动(我不希望发生这种情况,但这就是我有此设置的原因)。

以下摘自systemctl 手册页并格式化为SO:

重新启动=值可以是noon-successon-failureon-abnormalon-watchdogon-abort、 或always

接下来解释每个值:

默认值) - 如果设置为no服务将不会重新启动。

成功- 如果设置为on-success,只有当服务进程干净退出时才会重新启动。在这种情况下,干净退出意味着退出代码为 0,或者信号 SIGHUP、SIGINT、SIGTERM 或 SIGPIPE 之一,另外还包括 SuccessExitStatus= 中指定的退出状态和信号。

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

异常状态- 如果设置为on-abnormal,则当进程被信号终止(包括核心转储,不包括上述四个信号)、操作超时或触发看门狗超时时,服务将重新启动。

中止时- 如果设置为on-abort,则仅当服务进程由于未指定为干净退出状态的未捕获信号而退出时,服务才会重新启动。如果设置为 on-watchdog,则仅当服务的 watchdog 超时到期时,服务才会重新启动。

总是- 如果设置为always,则无论服务是否干净退出、是否因信号异常终止或超时,服务都将重新启动。

另请参阅这个精彩的答案! https://unix.stackexchange.com/a/507917/119816

相关内容