私は、ubuntuサーバーで実行されているサービスによって定期的に書き込まれるファイルを持っています。現在、タイマーで実行されている別のサービスがあり、書き込まれたファイルの前の状態からの変更をチェックし、変更が行われた場合はmysqlデータベーステーブルを更新します。タイマーが作動するのを待つのではなく、ファイルに変更が加えられたときにすぐに通知できるようなサービスをセットアップしたいのですが、systemdを使用してファイル監視を設定する方法はわかりません。
このためのsystemdメカニズムはpath unitで、監視するファイルにPathChanged
またはPathModified
設定。ライターがファイルに書き込む方法によって異なります。
ファイル全体を書き込み、そのたびに閉じる場合、PathChanged
はPathModified
の落とし穴を回避します。これは、全体としての変更が複数の書き込みで一部のみを書き込む場合、時期尚早にアクティブ化される可能性があります。ファイルの。ただし、その一方で、ファイルが書き込み用に開かれただけで実際には書き込まれなかった場合でも、PathChanged
はトリガーされる可能性があります。
パス単位には、関連するサービス単位と同じ名前を付けるか、Unit
設定を使用します。この関連するサービス単位はもちろん、ファイルの内容をデータベースに転送するサービスであり、余分なタイマーは不要です。ファイルに関連する変更が発生すると、パスユニットによりサービスユニットがアクティブになります(まだアクティブになっていない場合)。これは、いわゆるパスのアクティブ化です。
systemd.unit
。 systemdのマニュアルページ。 freedesktop.org。systemd.path
。 systemdのマニュアルページ。 freedesktop.org。