さまざまなタイマーを備えたsystemdテンプレートユニット

さまざまなタイマーを備えたsystemdテンプレートユニット

私はいくつかの仕事をしており、定期的に始めますが、お互いに相殺するようにシステムが欲しいです。

これらの作業は非常に似ているため、システム化されたテンプレート単位を使用してすべての作業を処理したいと思いました。

しかし、これらのタスクは少しの負荷を引き起こす可能性があるので、開始時間をソートし、実際のサービスごとに異なるシステムタイマーを使用したいと思います。

テンプレートに基づいてサービスを作成している間に追加のパラメータ(特定の開始時間)を渡す方法はありますか?

systemctl start MyGeneralService@Specific1.{AdditionalArgument??}.service

それとも、後でセルテンプレートで使用される変数を読み取る方法はありますか?

[Service]
MyVar = {?XYZ?} /etc/MyService.d/%i.conf {?XYZ?}

[Timer]
OnCalendar=*:0/{?MyVar?}

または、テンプレートから派生サービスへの依存関係を定義する方法はありますか?つまり、before=/after= 動的に (??) 方式でサービスを派生させるのです。

Specific2
[Service]
After=MyGeneralService@{?%i-1?}.service

答え1

ここで剖検ができますか? :)

あなたが必要です時間制労働者、サービスを指定してバンドルを作成できますUnit。たとえば、

# systemctl edit --full --force [email protected]
...
[Timer]
Unit=MyGeneralService@%i.service
RandomizedDelaySec=30
OnActiveSec=5 #start on timer activation after 5 sec once 
OnUnitActiveSec=1w #start on timer activation each 1 week pass
...

より一般的な(汚れた)方法が必要な場合は、次のことを利用してこれを実行できます。%Jトークン:

  1. 汎用サービス/タイマーを作成します。
  2. 作るハードリンクサービス/タイマーに必須パラメーターを最後のプレフィックスワードとして指定し、次のように指定します。-

例:

# systemctl edit --full --force [email protected]
...
[Timer]
Unit=MyGeneralService@%i.service
OnUnitActiveSec=%J
...

# ln /etc/systemd/system/[email protected] /etc/systemd/system/[email protected]
# ln /etc/systemd/system/[email protected] /etc/systemd/system/[email protected]
# systemctl daemon-reload
# systemctl show [email protected]
...
[email protected]
TimersMonotonic={ OnUnitActiveUSec=1w ; next_elapse=0 }
...
# systemctl show [email protected]
...
[email protected]
TimersMonotonic={ OnUnitActiveUSec=1d ; next_elapse=0 }
...

PS:クイックタイマー実習アーチ

関連情報