看门狗上的systemd restart服务确实终止了以前被挂起的实例

时间:2014-08-26 11:08:14

标签: daemon watchdog systemd

我尝试设置systemd服务配置以在看门狗故障时重新启动服务。如果我的应用程序没有及时调用sd_notify(),systemd会生成新实例。 但是,previus实例并未被杀死。过了一段时间,我有许多应用程序运行的实例。

$ systemctl status my-daemon.service

  Loaded: loaded (/lib/systemd/system/my-daemon.service; disabled)
  Active: active (running) since Tue, 26 Aug 2014 10:27:46 +0000; 7s ago
Main PID: 1433 (attendance-syst)
  CGroup: name=systemd:/system/my-daemon.service
      ├ 1281 /usr/local/bin/my-daemon
      ├ 1384 /usr/local/bin/my-daemon
      ├ 1407 /usr/local/bin/my-daemon
      └ 1433 /usr/local/bin/my-daemon
      ...

这是我的服务文件的一部分:

[Service]
ExecStart=/usr/local/bin/my-daemon
TimeoutStopSec=5
WatchdogSec=10
Restart=on-failure

如何配置systemd来杀死看门狗失败的实例?

我已经阅读了手册page,但它对我没有帮助。

我认为Restart=on-failure默认会重启hanged进程......

1 个答案:

答案 0 :(得分:3)

这是一个错误,已在较新版本的systemd中修复。

  • 在systemd 208(可用于debian jessie)中,它可以正常工作。

  • 在systemd 204(可用于debian wheezy via backports)中,它仍然被打破。

我没有找到他们修复它的确切版本。