【发布时间】:2016-07-02 19:52:55
【问题描述】:
我正在使用:
inotifywait -m -q -e close_write --format %f . | while IFS= read -r file; do
cp -p "$file" /path/to/other/directory
done
监控文件夹的文件完成情况,然后将其移动到另一个文件夹。
文件是成对制作的,但在不同的时间制作,即 File1_001.txt 在下午 3 点制作,File1_002.txt 在晚上 9 点制作。我想监控这两个文件的完成情况,然后启动一个脚本。
script.sh File1_001.txt File1_002.txt
所以我需要另一个 inotifywait 命令或不同的实用程序,它也可以识别两个文件都存在并完成,然后启动脚本。
有人知道如何解决这个问题吗?
【问题讨论】:
-
我不太了解您的要求或您的挑战是什么;在我看来,您可以只启动两次等待循环,每个文件一次。也就是说,this answer 可能会为您提供替代策略。请注意,使用该答案和您的问题中的脚本摘录,如果文件名中包含非标准字符(如空格或换行符或其他控制字符),您可能会遇到失败。
-
@ghoti 说了什么;你的要求很模糊。
-
@ghoti 谢谢,我已经更新了我的问题以尝试更清楚。我需要等待由分隔符分隔的两个文件都关闭,然后将两个文件名都传递给一个新脚本。意思是,应该传递 File1_001.txt 和 File1_002.txt,即使 File2_001.txt 在 File1_002.txt 之前完成。
-
如果它们是相隔 6 小时创建的,则延迟不会成为问题,因此,如果您在
cron中每 10 分钟检查 2 个文件并运行脚本(如果两者都存在),则不会那足够好吗?你必须对创建过程有一定的了解,知道它每分钟写一次或类似的东西,所以如果修改时间超过2分钟,你就可以知道它已经写完了。
标签: linux bash monitoring inotifywait