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

Linuxでディレクトリの内容が変更されたときにスクリプトを自動的に実行する方法は?

解決策 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 を含む多くのディストリビューション用にパッケージ化されていると思います。


Linux
  1. LinuxのbashコマンドをPERLスクリプトで実行する方法は?

  2. ディレクトリの内容が更新されたときにコマンドを実行するにはどうすればよいですか?

  3. バックグラウンドでスクリプトを実行する方法 (linux openwrt)?

  1. Linux –画面上でスクリプトを実行する方法ロック/ロック解除?

  2. Linux – Unix / linuxファイルのディレクトリ構造情報をどのように検査しますか?

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

  1. Linuxのディレクトリツリーで最も古いファイルを見つける方法

  2. ターミナル(ubuntu)でPythonスクリプトを実行するには?

  3. Linux:特定のディレクトリでコマンドを実行する方法