ウォッチドッグの失敗時にサービスを再起動するように 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
デフォルトでハングしたプロセスを再起動すると思いました...