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

上記のリンクの他の答えは詳細を追加します。

関連情報