我有一个shell脚本,我在其中使用' inotifywait'监视三个目录。一旦文件进入目录' dirToProcess'完成了一些处理,然后将文件移动到“成功”和“成功”状态。或者' 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但似乎没有工作)
由于
答案 0 :(得分:0)
您需要为-m
指定inotifywait
标志,以便在第一个事件发生后继续执行。