解決策 1:
幸運にも debian ベースのディストリビューションを使用している場合は、apt-get install dnotify
.他のディストリビューションにもおそらく似たようなものがあります - dnotify
を探してください 名前。
dnotify は、Linux カーネル 2.4.19+ の dnotify API に基づく単純なプログラムです。dnotify は、特定のディレクトリの内容が変更されるたびに、指定されたコマンドを実行できます。これはコマンド ラインから実行され、監視する 1 つ以上のディレクトリと、ディレクトリが変更されたときに実行するコマンドの 2 つの引数を取ります。オプションは、トリガーするイベントを制御します:ファイルがディレクトリで読み取られたとき、ファイルが作成されたとき、削除されたときなど。
独自のプログラム内でこれを処理する場合は、dnotify も使用する API です。
解決策 2:
次のように、inotify-tools を使用してスクリプトを実行できます。変更されたファイル、新しいファイル、および削除されたファイルの変更についてディレクトリを監視し、スクリプトを実行します。
#!/bin/sh
while inotifywait -e modify -e create -e delete /home/me/code; do
rsync [options] /home/me/code/ /media/nfs/code/
done
解決策 3:
incron は基本的にあなたが望むものだと思います。通知メカニズムとしてinotifyを使用します(他の人が指摘したように、dnotifyに取って代わります)が、inotifywaitなどを使用して継続的に実行されるスクリプトを必要としません(ただし、明らかに、incronデーモンは常に実行されています)。システム全体の「crontab」とユーザーの「crontab」は、標準の cron と同様の方法でサポートされていますが、トリガーとして時間を指定するのではなく、inotify イベントとファイル/ディレクトリ名が使用されます。
incron は、Ubuntu や Debian を含む多くのディストリビューション用にパッケージ化されていると思います。