Вопрос

Очень похоже на аналогичный вопрос 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) это идеальное решение, но оно требует исправления вашего ядра

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top