Отслеживать каталог изменений
Вопрос
Очень похоже на аналогичный вопрос SO, Я пытаюсь отслеживать каталог на компьютере Linux на предмет добавления новых файлов и хотел бы немедленно обработать эти новые файлы, когда они поступят.Есть идеи, как лучше всего это реализовать?
Решение
Посмотри на уведомлять.
С помощью 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"
Альтернативно, используя --format
вместо -c
на inotifywait
была бы идея.
Только man inotifywait
и man inotifywatch
для получения дополнительной информации.
Вы также можете использовать incron
и используйте его для вызова сценария обработки.
Одно из решений, о котором я подумал, — это создать «прослушиватель файлов» в сочетании с заданием cron.Я не в восторге от этого, но думаю, что это может сработать.
fschange (уведомление об изменении файловой системы Linux) это идеальное решение, но оно требует исправления вашего ядра