GNU/Linux >> Linux の 問題 >  >> Linux

ファイルが変更されたときにスクリプト/プログラムを実行する

オプションの 1 つは、Linux カーネルの inotify サブシステムです:

<ブロック引用>

inotify は Linux カーネル サブシステムであり、ファイル システムを拡張してファイル システムの変更を通知し、それらの変更をアプリケーションに報告する役割を果たします

しかし inotify 以降 はカーネルランドです。実際に使用するには、ユーザー空間に何かが必要です:

  • 時間:
<ブロック引用>

inotify cron デーモン (incrond) は、ファイルシステム イベントを監視し、システムおよびユーザー テーブルで定義されたコマンドを実行するデーモンです。これは一般的に cron(8) に似ています。

  • ガミン:
<ブロック引用>

Gamin は、FAM のサブセットである File Alteration Monitor を個別に実装する、ファイルとディレクトリの監視システムです。サービスとして実行すると、ファイルまたはディレクトリへの変更を検出できます。 gam_server は Gamin のデーモンとして機能します。

  • 'inoticoming':
<ブロック引用>

inoticoming - ファイルが着信ディレクトリにヒットしたときにアクションをトリガーします

askubuntu に同様の質問への回答がありました:

https://askubuntu.com/a/43848/1223


これを行うもう 1 つの手っ取り早い方法は、 inotifywait を使用することです。 inotify-tools パッケージ (fedora 上) から。

1 つの bash コマンド ラインからすべてを実行できるため、この方法の方が気に入っています。保存したばかりの結果を確認するために小さなプログラムを作成するときに、これをよく使用します。

while [[ 1 ]]; do inotifywait -e modify <filename>; make && ./helloworld; done

Linux
  1. ファイルの存在を確認し、存在しない場合はコマンドを実行するにはどうすればよいですか?

  2. Linuxでシェルスクリプトを実行しようとすると、バイナリファイルを実行できません

  3. シェルで .sh 拡張子のないファイルを実行する方法

  1. ファイルが変更されるたびにコマンドを実行する方法は?

  2. OpenVPN --up スクリプト - 外部プログラムを実行できませんでした

  3. USB デバイスを接続するときにシェルスクリプトを実行する方法

  1. 「vi」エディタで編集すると、iノードの値が変わるのはなぜですか。

  2. * .desktopファイルからShスクリプトを実行しますか?

  3. ファイルまたはディレクトリが変更されたときにシェルスクリプトを実行する方法は?