Skip to content

systemdユニットの前提条件

似たような仕組みが複数ある。特にマウントポイントの場合は

  • WantsMountsFor=
  • RequiresMountsFor=
  • ConditionPathExists=
  • ConditionPathIsDirectory=
  • ConditionPathIsMountPoint=

WantsMountsFor=RequiresMountsFor=systemdユニットの順序を制御するでもみたように弱い参照か強い参照かどうかで使い分ける。基本的にマウント元のファイルがなければ何もできないので、RequiresMountsFor= を使うことが多いだろう。これらのディレクティブは暗黙的にターゲットとなるファイルシステムにも依存する。

では ConditionPathExists= のような条件ディレクティブとは何が違うのか。RequiresMountsFor= はユニット実行の依存を表現するので起動するための制約を意味する。noauto でマークされていない限りは制約が満たされれば自動的にマウントする。反面、ConditionPathExists= のような条件はユニットを実行するときに条件が整っているかどうかを検査するためのもので、起動順序には影響しない。

追加の情報として、ConditionXxx= ディレクティブで対象外となったユニットは失敗扱いとはならないので Restart= によるリトライもされなくなる。