Inotifywait在执行一次后没有执行

时间:2016-01-25 20:15:48

标签: linux shell inotify

我有一个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但似乎没有工作)

由于

1 个答案:

答案 0 :(得分:0)

您需要为-m指定inotifywait标志,以便在第一个事件发生后继续执行。