비슷한 서비스의 인스턴스를 쉽게 생성할 수 있는 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