起動時または再起動時にシェルスクリプトを呼び出すsystemdサービスを作成しました。
[Unit]
Description=Starts the DCCA index software
[Install]
WantedBy=multi-user.target
[Service]
ExecStart=/opt/insiteone/bin/indexControl start
ExecStop=/opt/insiteone/bin/indexControl stop
# Execute pre and post scripts as root
#PermissionsStartOnly=true
Restart=on-abort
TimeoutSec=600
最初は、それが開始されるとすぐに無限ループで再起動し続けましたが、TimeoutSec
オプションを追加すると、サービスが初めて開始された直後に(開始されたときに)ExecStop
が呼び出されました、その後すぐに再び停止します)。
手がかり、どこが間違っているのですか? PS:indexControlは、他のプロセスを開始するシェルスクリプトです。
Restart=on-abort
をRestart=on-abnormal
に変更してみてください
から http://www.freedesktop.org/software/systemd/man/systemd.service.html :
エラーからの自動回復を試みることで信頼性を高めるために、これをon-failureに設定することは、長時間実行サービスの推奨される選択です。独自の選択で終了できるサービス(および即時の再起動を回避するサービス)の場合、代替オプションは代替オプションです。
また、Type=oneshot
を[Service]
セクションに追加することもできます。
https://wiki.archlinux.org/index.php/Systemd#Service_types から:
Type = oneshot:これは、単一のジョブを実行して終了するスクリプトに役立ちます。 RemainAfterExit = yesも設定して、プロセスの終了後もsystemdがサービスをアクティブと見なすようにすることができます。
以下の推奨される変更を貼り付けることができます。
[Unit]
Description=Starts the DCCA index software
[Install]
WantedBy=multi-user.target
[Service]
Type=oneshot
ExecStart=/opt/insiteone/bin/indexControl start
ExecStop=/opt/insiteone/bin/indexControl stop
Restart=on-abnormal
他に考慮すべきことは、Restart=
行が必要かどうかです...このサービスファイルが呼び出すスクリプトは頻繁に失敗しますか?