Монитор Каталог для изменений - PullRequest
21 голосов
/ 04 февраля 2009

Подобно подобному вопросу SO , я пытаюсь отслеживать каталог в окне Linux для добавления новых файлов и хотел бы немедленно обработать эти новые файлы, когда они появятся. Есть идеи, как лучше всего это реализовать?

Ответы [ 4 ]

25 голосов
/ 07 июля 2012

Сначала убедитесь, что 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"

В качестве альтернативы было бы лучше использовать --format вместо -c на inotifywait.

Просто man inotifywait и man inotifywatch для получения дополнительной информации.

Вы также можете использовать incron и использовать его для вызова сценария обработки.

23 голосов
/ 04 февраля 2009

Посмотрите на inotify .

С помощью inotify вы можете посмотреть каталог для создания файла.

0 голосов
/ 24 августа 2011

fschange (Уведомление об изменении файловой системы Linux) - это идеальное решение, но оно должно исправить ваше ядро ​​

0 голосов
/ 04 февраля 2009

Одним из решений, о котором я подумал, является создание "слушателя файлов" в сочетании с заданием cron Я не в восторге от этого, но думаю, что это может сработать.

...