다시 시작하지 못한 시스템 서비스는 실패 대신 비활성으로 표시됩니다.

다시 시작하지 못한 시스템 서비스는 실패 대신 비활성으로 표시됩니다.

다음 서비스를 고려하십시오.

[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

Restartsystemd에서 사용을 피하면 이 문제를 해결할 수 있습니다.

관련 정보