Очередь событий с inotifywait

Инициализируйте исходный и целевой каталоги.

srcdir=/user/user1/src
tagtdir=/user/user1/dest

Я хотел бы получать уведомления, когда файл копируется в srcdir и -m для постоянного мониторинга.

inotifywait -m -r -e close "$srcdir" | 

while read filename eventlist eventfile 

Вызвать мой скрипт на Python.

do 
    mv "$srcdir/$eventfile" "$tgtdir/$eventfile" && ./myscript.py "$eventfile" 
done 

К сожалению, мой сценарий достаточно долгое время, и если есть другие файлы, копируемые в то время как myscript.py выполняется, я скучаю по этим событиям. Можно ли поставить в очередь события и обработать их позже?

Другой вариант, я буду работать myscript.py в фоновом режиме, и это может решить эту проблему.

1 ответ

Решение

Вы можете использовать Сторож вместо; он работает как постоянный сервис и будет помнить события, которые вы пропустили.

Существует несколько различных способов достижения вашего сценария использования, но, вероятно, самый простой - это настроить триггер и заставить сторожа напрямую запускать ваш скрипт при изменении файлов или использовать привязки клиента pywatchman для запуска постоянного сценария python и подписывайтесь на события и предпринимайте любые действия, которые захотите.

Другие вопросы по тегам