次のサービスを検討してください。
[Unit]
Description=foobar
[Service]
Type=simple
ExecStart=/usr/bin/false
Restart=on-failure
[Install]
WantedBy=multi-user.target
私はそれが数回再起動し、失敗したデバイスで動作を停止すると予想しました。しかし、これはUbuntu Xenialを使用するsystemd 229で実際に起こるものです。
root@monitoring:/etc/systemd/system# systemctl status foobar
● foobar.service - foobar
Loaded: loaded (/etc/systemd/system/foobar.service; disabled; vendor preset:
Active: inactive (dead)
Apr 01 21:08:43 monitoring.ci.ezyang.com systemd[1]: foobar.service: Service hol
Apr 01 21:08:43 monitoring.ci.ezyang.com systemd[1]: Stopped foobar.
Apr 01 21:08:43 monitoring.ci.ezyang.com systemd[1]: Started foobar.
Apr 01 21:08:43 monitoring.ci.ezyang.com systemd[1]: foobar.service: Main proces
Apr 01 21:08:43 monitoring.ci.ezyang.com systemd[1]: foobar.service: Unit entere
Apr 01 21:08:43 monitoring.ci.ezyang.com systemd[1]: foobar.service: Failed with
Apr 01 21:08:44 monitoring.ci.ezyang.com systemd[1]: foobar.service: Service hol
Apr 01 21:08:44 monitoring.ci.ezyang.com systemd[1]: Stopped foobar.
Apr 01 21:08:44 monitoring.ci.ezyang.com systemd[1]: foobar.service: Start reque
Apr 01 21:08:44 monitoring.ci.ezyang.com systemd[1]: Failed to start foobar.
重要なのは、中程度の範囲で故障したデバイスとしてリストされておらず、systemctl --failed
状態が低下しないことですsystemctl status
。なぜ?
答え1
これはsystemd 238以前で修正されたsystemdのバグです。
[root@866d9b9835e0 system]# systemctl status foobar
* foobar.service - foobar
Loaded: loaded (/etc/systemd/system/foobar.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Sun 2018-04-01 21:06:21 UTC; 14min ago
Process: 143 ExecStart=/usr/bin/false (code=exited, status=1/FAILURE)
Main PID: 143 (code=exited, status=1/FAILURE)
Apr 01 21:06:21 866d9b9835e0 systemd[1]: foobar.service: Service hold-off time over, scheduling restart.
Apr 01 21:06:21 866d9b9835e0 systemd[1]: foobar.service: Scheduled restart job, restart counter is at 5.
Apr 01 21:06:21 866d9b9835e0 systemd[1]: Stopped foobar.
Apr 01 21:06:21 866d9b9835e0 systemd[1]: foobar.service: Start request repeated too quickly.
Apr 01 21:06:21 866d9b9835e0 systemd[1]: foobar.service: Failed with result 'exit-code'.
Apr 01 21:06:21 866d9b9835e0 systemd[1]: Failed to start foobar.
[root@866d9b9835e0 system]# systemctl --version
systemd 238
+PAM -AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN +PCRE2 default-hierarchy=hybrid
Restart
systemdでの使用を避けると、この問題を解決できます。