Как и как аналогичный вопрос SO, я пытаюсь контролировать каталог в ящике Linux для добавления новых файлов и хотел бы немедленно обработать эти новые файлы когда они прибудут. Любые идеи о наилучшем способе реализации этого?
Каталог мониторинга изменений
Ответ 1
Посмотрите inotify.
С помощью inotify вы можете посмотреть каталог для создания файла.
Ответ 2
Сначала убедитесь, что установлен 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
и использовать его для вызова обработки script.
Ответ 3
Одним из решений, о котором я думал, является создание "прослушивателя файлов" в сочетании с заданием cron. Я не сумасшедший, но думаю, что это может сработать.
Ответ 4
fschange (Уведомление об изменении файловой системы Linux) - идеальное решение, но для исправления вашего ядра требуется