(他の回答に加えて)Linux固有のinotify(7)機能を使用できます。
固定ファイル パス (実際には特定の i ノード) を使用して、特定の 1 つ (またはいくつか) の特定のファイルを追跡する必要があることを理解しています。たとえば、いつ/var/run/foobarアクセスまたは変更されたかを追跡し、それが発生したときに何かを実行したい場合があります
特に、 incrond(8)をインストールして使用し、incrontab(5)を介して構成したい場合があります。
特定のファイル(NFS ファイル システムではなく、Ext4、BTRS などのネイティブ ローカル上)がアクセスまたは変更されたときにスクリプトを実行する場合は、 inotifyを使用するのがまさにその目的のために行われます。 incrond
PS。私の知る限り、inotifyNFSファイルシステムなどのリモートネットワークファイルではうまく機能しません(特に、別のNFSクライアントマシンがファイルを変更している場合)。
あなたが好きなファイルが何らかの形でソースファイルである場合、リビジョン管理システム ( gitなど) またはビルダーシステム ( GNU makeなど) に興味があるかもしれません。ある意味で、これらのツールはファイルの変更に関連しています。
特定のファイル システムをいくつかのFUSEファイル システムに配置し、独自のFUSEデーモンを作成することもできます。
ファイルにアクセスするプログラムを制限および変更できる場合は、 flock(2) 、 lockf(3) などのアドバイザリ ロックを使用することをお勧めします。
おそらく、ファイルにあるデータは何らかのデータベースにあるはずです(たとえば、 sqliteやPostGreSQLやMongoDBのような実際の DBMS ) 。ACIDプロパティは重要です....
ファイルシステムとマウントオプションが重要になる場合があることに注意してください。
stat(1)コマンドを使用することをお勧めします。
実際のユースケースと動機を理解せずに、これ以上支援することは困難です。XY問題を避けるべきです
おそらく、ワークフローが間違っているため (複数のユーザー間でファイルを共有して書き込むことができる)、別の方法で全体的な問題に取り組む必要があります。ペットプロジェクトの場合、少なくともアドバイザリロックを使用し、独自のプログラム (おそらくsetuid ) を使用してのみ情報にアクセスして変更することをお勧めします(これには、... のような通常のエディターやコマンドは含まれません)。ただし、暗黙的なユースケースは、DBMS アプローチ (データベースに大量のデータを含める必要はなく、小さい可能性があります)、またはGDBM ライブラリのようなインデックス ロック ファイルの処理に適しているようです。flockgeditcat
POSIX システムと Linux では、複数のプロセスが同じファイルに同時にアクセス(さらには変更)できることに注意してください (ロックまたは同期を使用しない限り)。
Advanced Linux Programmingの本 (無料で入手可能) を読むと、より広い視野が得られます (ただし、本が書かれた後に登場したinotifyについては言及されていません)。