1

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

$ 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 来杀死在看门狗上失败的实例?

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

我认为Restart=on-failure默认情况下应该重新启动挂起的进程......

4

1 回答 1

3

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

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

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

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

于 2014-09-02T07:41:45.580 回答