我尝试设置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进程......
答案 0 :(得分:3)
这是一个错误,已在较新版本的systemd中修复。
在systemd 208(可用于debian jessie)中,它可以正常工作。
在systemd 204(可用于debian wheezy via backports)中,它仍然被打破。
我没有找到他们修复它的确切版本。