gpt4 book ai didi

linux - Inotifywait 在一次执行后没有被执行

转载 作者:太空狗 更新时间:2023-10-29 12:43:12 30 4
gpt4 key购买 nike

我有一个 shell 脚本,我在其中使用“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 一起使用,但似乎不起作用)

谢谢

最佳答案

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

关于linux - Inotifywait 在一次执行后没有被执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35001519/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com