ExecStartエントリを実行する前にサービスを停止するにはどうすればよいですか?

ExecStartエントリを実行する前にサービスを停止するにはどうすればよいですか?

サービスを停止してスクリプトを実行した後、サービスを再起動するようにタイマーを設定したいと思います。

1つの可能性は次のとおりです。

Type=oneshot
ExecStartPre=/bin/systemctl stop myservice
ExecStart=/usr/local/bin/myscript.sh
ExecStartPost=/bin/systemctl start myservice

もう一つは、myscript.shを含むすべてを扱うことですsystemctl

systemctlただし、サービスと対話するためのシステム組み込みメカニズムがある場合は、サービス宣言に使用するのが難しいと思います。これらのタスクを実行するためのよりきれいな方法はありますか?

答え1

WatchdogSec を(ab?) 利用して、規定された時間内に確認できなかった場合、サービスは終了します。その後、再起動しますが、まずスクリプトを実行します。

WatchdogSec={interval}
Restart=on-watchdog
ExecStopPost=/script.sh

引用:監視セキュリティ

サービスの実行中にバックアップが可能な場合は、より良いサービスになります。

関連情報