~에 따르면시스템 문서, systemd는 하위 프로세스가 분기된 후 즉시 성공을 보고합니다. 이는 내 빠른 테스트 결과와 일치합니다.
$ cat /etc/systemd/system/test.service
[Service]
Type=simple
ExecStart=/bin/asdfg
$ systemctl daemon-reload
$ systemctl start test # Exits immediately
$ echo $?
0
$ systemctl status test
● test.service
Loaded: loaded (/etc/systemd/system/test.service; static; vendor preset: enabled)
Active: failed (Result: exit-code) since Sun 2019-12-15 01:56:52 CST; 2s ago
Process: 24483 ExecStart=/bin/asdfg (code=exited, status=203/EXEC)
Main PID: 24483 (code=exited, status=203/EXEC)
Dec 15 01:56:52 iBug-Server systemd[1]: Started test.service.
Dec 15 01:56:52 iBug-Server systemd[24483]: test.service: Failed to execute command: No such file or directory
Dec 15 01:56:52 iBug-Server systemd[24483]: test.service: Failed at step EXEC spawning /bin/asdfg: No such file or directory
Dec 15 01:56:52 iBug-Server systemd[1]: test.service: Main process exited, code=exited, status=203/EXEC
Dec 15 01:56:52 iBug-Server systemd[1]: test.service: Failed with result 'exit-code'.
$
그러나 과거 경험에 따르면 일부 서비스가 시작되거나 다시 시작되지 않으면 systemd는 다음과 같은 오류를 보고 nginx
합니다 ssh
.
Job for test.service failed because the control process exited with error code.
See "systemctl status test.service" and "journalctl -xe" for details.
systemd가 내 테스트 서비스(Freedesktop.org의 매뉴얼 페이지와 일치)에 대한 실패를 보고하지 않고 대신 다른 서비스에 대한 실패를 보고하는 이유는 무엇입니까?
설명: 구체적으로 'commands'를 언급하고 있습니다 systemctl start/restart
. "report failure"로 인해 메시지가 인쇄되고 0이 아닌 상태로 종료됩니다. 출력은 systemctl status
관련이 없습니다.