У меня есть сценарий оболочки, в котором я использую «inotifywait» для мониторинга трех каталогов. Как только файл попадает в каталог «dirToProcess», выполняется некоторая обработка, а затем файлы перемещаются в каталог «successDir» или «failedDir».
Теперь, как только какие-либо файлы будут перемещены или скопированы в любой из каталогов, я хочу, чтобы inotifywait выполнялся.
Вот код, который я выполняю:
inotifywait $dirToProcess $successDir $failedDir -e create -e moved_to --
exclude "\.(swx|swp|end|en1)" |
while read path action file; do
if [ -f $dirToProcess/$file ]; then
doSomething;
elif [ -f $successDir/$file ]; then
cleanDir $successDir # function which has some specific logic
exit 0;
elif [ -f $failedDir/$file ]; then
cleanDir $failedDir # function which has some specific logic
exit 0;
else
c4lx_log "File $file not in poll, archive or failed, then why did we get notified?"
exit 0;
fi
Вот проблема: как только файлы приходят в 'dirToProcess', inotifywait замечает это и вызывается. Но после обработки, когда файлы перемещаются в "$successDir" или "$failedDir" (с помощью того же кода, который обрабатывал файлы в "dirToProcess", inotifywait не выполняется. Но если я перемещаю файлы вручную в любой из этих двух каталогов, все кажется чтобы нормально работал.
Может ли кто-нибудь дать мне какой-нибудь указатель здесь или объяснить, если мне не хватает каких-либо деталей здесь.
(я пытался использовать опцию -m или -r с inotifywait, но, похоже, не работает)
Спасибо