私のapp.serviceファイルの[サービス]部分は次のとおりです:-
[Service]
Type=forking
Restart=no
IgnoreSIGPIPE=no
GuessMainPID=no
ExecStart=/opt/app/appl_init.d start
ExecStop=/opt/app/appl_init.d stop
TimeoutSec=infinity
その後、アプリをインストールすると、ファイルは/usr/lib/systemd/system/app.service
に正しくコピーされます。
systemctl daemon-reload
を実行しましたが、起動時間に影響がないようです。 systemctl start app
またはsystemctl reload app.service
を実行すると、次のエラーで失敗します。-
Job for app.service failed because a fatal signal was delivered to the control process. See "systemctl status app.service" and "journalctl -xe" for details
systemctl status app
の出力は次のとおりです。-
● app.service - ApplicationTest
Loaded: loaded (/opt/app/appl_init.d; enabled; vendor preset: disabled)
Active: failed (Result: signal) since Tue 2017-03-21 01:55:22 EDT; 1min 4s ago
Docs: man:app(8)
Process: 4126 ExecStart=/opt/app/appl_init.d start (code=killed, signal=KILL)
Mar 21 01:55:22 centosvm systemd[1]: Starting ApplicationTest...
Mar 21 01:55:22 centosvm systemd[1]: app.service start operation timed out. Terminating.
Mar 21 01:55:22 centosvm systemd[1]: app.service stop-final-sigterm timed out. Killing.
Mar 21 01:55:22 centosvm systemd[1]: app.service: control process exited, code=killed status=9
Mar 21 01:55:22 centosvm systemd[1]: Failed to start ApplicationTest.
Mar 21 01:55:22 centosvm systemd[1]: Unit app.service entered failed state.
Mar 21 01:55:22 centosvm systemd[1]: app.service failed.
私が気付いたもう1つの奇妙なことは、systemctl show app.service -p TimeoutSec
を実行すると、結果が得られないことです。空白ですか?
systemctl reboot
を試してみましたが、それでもサイコロはありません。
もちろん、値をTimeoutSec=5min
のような他の値に変更すると、完全に正常に機能します。しかし、私は本当にこのアプリケーションが無限大を占める必要があります。
どこが間違っているのですか?
229より古いバージョンのsystemdを使用している場合、タイムアウトを無効にするには、無限大ではなく0を使用する必要がある場合があります。