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
上記のリンクの他の答えは詳細を追加します。