
この図はsystemd/タイマーにおいて処理の前後関係を記述する2つのサービスユニットファイルです。左のtest1.serviceが前処理、右のtest2.serviceが後処理のファイルで、2つを同時にタイマー起動したときに処理が重ならないようにするための書き方です。処理の制限時間TimeoutSecのデフォルトは90秒です。90秒を超える処理の場合は、必ずTimeoutSecを指定しましょう。そうしないと処理が90秒で打ち切られます。
前処理のサービスユニットファイルtest1.serviceには、[Service]セクションでType=notifyを指定します。これはこの処理の(起動の)完了を通知するためにsd_notify関数を使うという意味です。sd_notify関数を使うには次のコマンドでsystemd-develをインストールします。
$ sudo dnf install systemd-devel
そして、前処理のスクリプトtest1.shの最後に次の1行を追記します。
sd_notify(0, “READY=1”)
後処理のサービスユニットファイルtest2.serviceには、[Unit]セクションでAfter=test1.service(前処理のサービス)を指定します。そして、[Service]セクションでType=Simpleとして、TimeoutStartSec(待ち時間)とTimeoutStopSec(処理の制限時間)を指定します。この待ち時間は前処理test1.serviceのTimeoutSec(制限時間)と同じにします。

コメントを残す