cleanup.timerの発火時に、名前が異なるarchive-cleanup.serviceを起動する。
[Timer]へ追加する適切な行はどれか。
timerのUnit=は発火時に起動するunitを指定する。省略時は通常、同じbasenameの.serviceが対応する。
詳細解説
Unit=archive-cleanup.serviceUnit=はtimerが起動する対象unitを明示する。
正しい。Unit=archive-cleanup.serviceによりcleanup.timerの発火対象をbasenameの異なるserviceへ明示できる。
Service=archive-cleanup.service[Timer]の対象指定にService=というdirectiveは使わない。
誤り。[Timer]にはService=で対象を指定するdirectiveはなく、Unit=を使う。
Requires=archive-cleanup.serviceRequires=は依存関係を表す[Unit]のdirectiveで、timerの発火対象指定とは役割が異なる。
誤り。Requires=は[Unit]で依存関係を表すが、timer eventが起動する対象を指定する[Timer]のfieldではない。
ExecStart=archive-cleanup.serviceExecStart=はserviceが実行するcommandを指定し、timerの対象unit名には使わない。
誤り。ExecStart=は.service側で実行commandを定義し、timerから起動するunit名を指定する用途ではない。
実際に確かめる
一時的な検証環境で実行できる例です。
printf '%s\n' '[Timer]' 'Unit=archive-cleanup.service' | grep '^Unit='期待される結果
Unit=archive-cleanup.service理解のポイント
- Unit=は発火対象
- 異なるbasenameで明示
- ExecStartはservice側
確認時の注意
- 確認環境: grep / 合成timer unit
基礎のおさらい
既定の対応
Unit=を省略したfoo.timerは通常、同じ名前のfoo.serviceを起動する。
責務分離
時刻と発火対象は.timer、実際のcommandと実行user等は.serviceへ分けて管理する。