【问题标题】:Systemd restart triggers onfailure - how do I stop this?Systemd 重启触发 onfailure - 我该如何阻止它?
【发布时间】:2017-12-18 00:43:31
【问题描述】:

我有一个具有 OnFailure 处理程序(另一个服务)的 systemd 单元。如果我使用 systemctl 重新启动单元,则单元会停止,这会导致 OnFailure 处理程序运行。但是该单元没有失败 - 我只是想重新启动它并且需要阻止 OnFailure 运行。

root@device:/etc/systemd/system# systemctl restart myservice
[  159.194237] systemd[1]: Stopping myservice...
[  159.224148] systemd[1]: myservice.service: main process exited, code=killed, status=3/QUIT
[  159.224812] systemd[1]: myservice.service entered failed state.
[  159.225363] systemd[1]: Triggering OnFailure= dependencies of myservice.service.
[  159.225905] systemd[1]: Starting Handling myservice on Failure...
[  159.227664] systemd[1]: Starting myservice...
Job for myservice.service canceled.

操作系统是 Debian 8 (Jessie)

【问题讨论】:

  • 知情猜测:日志显示status=3/QUIT,这意味着进程因未处理的 SIGQUIT 而终止。要成功退出,它应该处理信号并优雅地终止。或者,设置 SuccessExitStatus 配置选项来告诉 systemd 其他退出状态不应计为失败。

标签: systemd


【解决方案1】:

可能ExecStop=中的命令产生错误导致服务进入失败状态。

【讨论】:

  • 没有 ExecStop 键。 systemd 执行了默认设置,即发送退出信号,导致主进程退出。这正是应该发生的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-31
  • 2015-07-26
  • 1970-01-01
  • 2016-04-26
相关资源
最近更新 更多