systemctl --failed는 실패한 인스턴스화된 서비스를 나열하지 않습니다.

systemctl --failed는 실패한 인스턴스화된 서비스를 나열하지 않습니다.

비슷한 서비스의 인스턴스를 쉽게 생성할 수 있는 systemd 템플릿을 성공적으로 만들고 구성했습니다.

템플릿은 다음과 같습니다.

[Unit]
Description=my awesome service %I
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/binary -c /path/to/config/%i.conf
ExecStop=/usr/bin/pkill --full %i
Restart=on-failure
User=root
Group=root
TimeoutSec=30

[Install]
WantedBy=multi-user.target

systemcl 활성화 name@kkk, systemctl start name@kkk를 사용하여 인스턴스를 활성화하고 시작했지만 /path/to/config/kkk.conf 파일이 생성되지 않아 서비스가 실패했습니다.

~# systemctl status [email protected][email protected] - my awesome service  kkk
   Loaded: loaded (/etc/systemd/system/[email protected]; enabled; vendor preset: enabled)
   Active: inactive (dead) (Result: exit-code) since Wed 2017-10-04 15:20:09 CEST; 3min 27s ago
  Process: 30116 ExecStop=/usr/bin/pkill --full %i (code=exited, status=1/FAILURE)
  Process: 30113 ExecStart=/usr/local/bin/binary -c /path/to/config/kkk.conf (code=exited, status=1/FA
 Main PID: 30113 (code=exited, status=1/FAILURE)

Oct 04 15:20:08 host systemd[1]: [email protected]: Unit entered failed state.
Oct 04 15:20:08 host systemd[1]: [email protected]: Failed with result 'exit-code'.
Oct 04 15:20:09 host systemd[1]: [email protected]: Service hold-off time over, scheduling restart.
Oct 04 15:20:09 host systemd[1]: Stopped my awesome service for kkk.

systemctl --failed를 실행하면 다음과 같은 결과가 나타납니다.

0 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

서비스가 실패했기 때문에 이것은 분명히 잘못된 것입니다. 내가 뭔가 잘못하고 있거나 여기서 뭔가를 놓치고 있습니까? 티아.

답변1

이는 다시 시작하지 못한 서비스가 "실패" 대신 "비활성"으로 표시되는 systemd의 버그입니다. 내 테스트에서는 229(Ubuntu Xenial의 기본값)로 나타났고 238로 수정되었습니다. 일부 변경 로그를 스누핑하면 어떤 버전이 수정되었는지 알 수 있습니다.

Restart가장 좋은 해결 방법 은 서비스 파일에서 삭제하고 수동으로 다시 시작하는 것 같습니다 .

답변2

서비스가 실패 상태가 아닙니다. 여기에서 볼 수 있듯이:

Active: inactive (dead) (Result: exit-code) since Wed 2017-10-04 15:20:09 CEST; 3min 27s ago

이것은 inactive (dead). 실패하면 다음과 유사한 메시지가 표시됩니다.

Active: failed (Result: exit-code)

두 개를 동시에 보고 싶다실패그리고비활성서비스에 대해 다음 명령을 사용해야 합니다.

systemctl --failed --all

관련 정보