similar SO question と同じように、Linuxボックスのディレクトリで新しいファイルが追加されていないか監視しようとしていますが、これらの新しいファイルをすぐに処理したいのですが。これを実装する最良の方法についてのアイデアはありますか?
inotify を見てください。
Inotifyを使用すると、ファイル作成のディレクトリを監視できます。
まず、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 inotifywait
とman inotifywatch
をご覧ください。
incron
を使用して、処理スクリプトを呼び出すこともできます。
fschange(Linuxファイルシステム変更通知) は完璧なソリューションですが、カーネルにパッチを適用する必要があります
私が考えた1つの解決策は、cronジョブと組み合わせた「ファイルリスナー」を作成することです。私はこれに夢中ではありませんが、うまくいくと思います。