systemd/タイマー前後関係

 この図は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(制限時間)と同じにします。

コメントを残す