私はいくつかの仕事をしており、定期的に始めますが、お互いに相殺するようにシステムが欲しいです。
これらの作業は非常に似ているため、システム化されたテンプレート単位を使用してすべての作業を処理したいと思いました。
しかし、これらのタスクは少しの負荷を引き起こす可能性があるので、開始時間をソートし、実際のサービスごとに異なるシステムタイマーを使用したいと思います。
テンプレートに基づいてサービスを作成している間に追加のパラメータ(特定の開始時間)を渡す方法はありますか?
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トークン:
- 汎用サービス/タイマーを作成します。
- 作るハードリンクサービス/タイマーに必須パラメーターを最後のプレフィックスワードとして指定し、次のように指定します。
-
例:
# 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:クイックタイマー実習アーチ