SysV에서 systemd로 서비스 시작 스크립트를 변환 중입니다.
우리의 "서비스"는 Netty에서 실행되는 Java 서버입니다.
서비스를 시작하려면 단위 파일에 다음과 같은 내용이 있습니다.
[Service]
SyslogIdentifier=%N
Type=simple
ExecStart=/usr/bin/java -jar ....jar
나는 정확한 명령이 여기서 관련이 없다고 생각합니다. 모든 것이 내 예상대로 시작되었고 모든 것이 순조롭게 진행되었습니다.
서비스를 끄려면 특별한 URL이 있습니다. 따라서 서비스를 중지하려면 단위 파일에 다음이 있습니다.
ExecStop=/usr/bin/wget -t3 -T5 -q -O- http://localhost:7090/shutdown
TimeoutStopSec=10
Restart=on-failure
전화할 때마다 systemctl stop server
항상 다음과 같은 결과를 얻습니다.
● server.service - some Control System server
Loaded: loaded (/etc/systemd/system/server.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sun 2019-03-24 00:54:19 UTC; 3s ago
Process: 8756 ExecStop=/usr/bin/wget -t3 -T5 -q -O- http://localhost:7090/shutdown (code=exited, status=0/SUCCESS)
Process: 8597 ExecStart=/usr/bin/java -jar ....jar (code=exited, status=0/SUCCESS)
서비스가 중단되었습니다. 그런데 내가 왜 그걸 얻었지 failed (Result: exit-code)
?
편집하다:running journalctl -u server
, 알겠습니다:
Mar 24 19:10:10 hive systemd[1]: Stopping some Control System server...
Mar 24 19:10:10 hive server[13731]: SHUTDOWN STARTING. END IN 15 SEC
Mar 24 19:10:10 hive systemd[1]: server.service: Main process exited, code=exited, status=143/n/a
Mar 24 19:10:10 hive systemd[1]: server.service: Failed with result 'exit-code'.
Mar 24 19:10:10 hive systemd[1]: Stopped some Control System server.
답변1
이 질문은 기본적으로 답변됩니다서버 장애.
간단히 말해서:
종료 코드 143은 프로그램이 종료하라는 SIGTERM 신호를 받았지만 신호를 올바르게 처리하지 못했음을 의미합니다.
[이는 "성공" 종료 상태로 유닛 파일에 종료 코드를 추가하여 억제할 수 있습니다.
[Service]
SuccessExitStatus=143
위 링크의 또 다른 답변은 자세한 내용을 추가합니다.