Systemd 서비스가 항상 중지되지 않습니다.

Systemd 서비스가 항상 중지되지 않습니다.

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

위 링크의 또 다른 답변은 자세한 내용을 추가합니다.

관련 정보