web-dev-qa-db-ja.com

ディレクトリの変更を監視する

similar SO question と同じように、Linuxボックスのディレクトリで新しいファイルが追加されていないか監視しようとしていますが、これらの新しいファイルをすぐに処理したいのですが。これを実装する最良の方法についてのアイデアはありますか?

22
Nate

inotify を見てください。

Inotifyを使用すると、ファイル作成のディレクトリを監視できます。

24
Douglas Leeder

まず、inotify-toolsがインストールされていることを確認してください。

次に、次のように使用します。

logOfChanges="/tmp/changes.log.csv" # Set your file name here.

# Lock and load
inotifywait -mrcq $DIR > "$logOfChanges" &
IN_PID=$$

# Do your stuff here
...

# Kill and analyze
kill $IN_PID
while read entry; do
   # Split your CSV, but beware that file names may contain spaces too.
   # Just look up how to parse CSV with bash. :)
   path=... 
   event=...
   ...  # Other stuff like time stamps?
   # Depending on the event…
   case "$event" in
     SOME_EVENT) myHandlingCode path ;;
     ...
     *) myDefaultHandlingCode path ;;
done < "$logOfChanges"

または、inotifywait--formatの代わりに-cを使用することをお勧めします。

詳細については、man inotifywaitman inotifywatchをご覧ください。

incronを使用して、処理スクリプトを呼び出すこともできます。

25
Evi1M4chine

fschange(Linuxファイルシステム変更通知) は完璧なソリューションですが、カーネルにパッチを適用する必要があります

0
felix021

私が考えた1つの解決策は、cronジョブと組み合わせた「ファイルリスナー」を作成することです。私はこれに夢中ではありませんが、うまくいくと思います。

0
Nate