Очередь событий с 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 и подписывайтесь на события и предпринимайте любые действия, которые захотите.