マルチユニット=パスまたはタイマーユニットのインスタンス?

マルチユニット=パスまたはタイマーユニットのインスタンス?

systemd.pathまたはsystemd.timerユニットに複数のUnit =インスタンスが存在できますか?それとも、それぞれUnit =インスタンスを持つタイマーデバイスのパスまたは複数のインスタンスを指定する必要がありますか?他の場所では指示を見つけたり取得することはできません。

前者は間違いなく簡単です。

特定のアプリケーションは、1つのパスデバイスが2つのインストールデバイスをアクティブにすることです。

特に、パスユニットは、仮想マシンが実行される前に静かになる仮想マシンのログファイルを監視します。マウントは仮想マシンの共有であり、ホストのfstabエントリで定義されます。各エントリは、x-systemd.requires =マウントオプションを使用して、仮想マシンが起動されるまでマウントが発生しないようにパス単位を指定します。ランニング。これは単一の共有に適しています。

したがって、より具体的な質問は、(a)ルートユニットが指示に従ってマウントユニットを単純に伝播してマウントユニットが共有をマウントするかどうか、または混乱してパスユニットが単一のマウントユニットのみを伝播できるかどうかです。 fstabで同じパスユニットを2回呼び出すと、競合またはエラーが発生しますか、または多くのUnit =ディレクティブを使用する場合(つまり、指定されたすべてのマウントポイントを再生成することによって)依存関係の表現にすぎません。

とても感謝しています。

答え1

man systemd.timer説明する:

単位=

タイマーの有効期限が切れるとアクティブになるデバイスです。パラメーターは、サフィックスが「.timer」ではないユニット名です。指定しない場合、この値はタイマー単位と同じ名前(サフィックスを除く)を持つサービスにデフォルト設定されます。 (上記参照)有効なユニットの名前は、サフィックスを除いてタイマーユニットのユニット名と同じにすることをお勧めします。

man systemd.path同様にこう言いました。

単位=

設定されたパスが変更されたときにアクティブになるデバイスです。パラメーターは、サフィックスが「.path」ではないユニット名です。指定しない場合、この値はデフォルトでパス単位(サフィックスを除く)と同じ名前のサービスに設定されます。 (上記参照) アクティブなユニット名は、サフィックスを除いてパスユニットのユニット名と同じにすることをお勧めします。

Unit=これらのいずれも、複数の行または行ごとに複数のパラメータを持つことができることを示唆していませんUnit=。試してみて動作しても文書化されていない動作なので、今後のバージョンの systemd でも動作するという保証はありません。

したがって、*.path同じまたはユニットを意味していても、トリガーされるべき各ユニットに対して/を生成するのが最も安全です。システムにすでに複数のデバイスがある可能性があります。*.timer*.path*.timer*.timerOnCalendar=daily

正直なところ、ルートに到達して2つの別々のサービスを実行すると、少し怖いでしょう。競合状態が発生します。複数のタスクを使用するか、タスクの順序を指定することで、サービスを変更して定期的な順序で発生するようにすることもできExecStartPre=ますExecStartPost=

関連情報