使用 inotifywait 排队事件
Posted
技术标签:
【中文标题】使用 inotifywait 排队事件【英文标题】:Queuing events with inotifywait 【发布时间】:2015-02-26 03:33:46 【问题描述】:初始化源目录和目标目录。
srcdir=/user/user1/src
tagtdir=/user/user1/dest
我希望在将文件复制到 srcdir 和 -m
以进行持续监控时收到通知。
inotifywait -m -r -e close "$srcdir" |
while read filename eventlist eventfile
调用我的 python 脚本。
do
mv "$srcdir/$eventfile" "$tgtdir/$eventfile" && ./myscript.py "$eventfile"
done
不幸的是,我的脚本很长一段时间,如果在执行myscript.py
时还有其他文件被复制,我会错过这些事件。是否可以将事件排队并稍后处理?
另一个选项是我将在后台运行myscript.py
,这可能会解决这个问题。
【问题讨论】:
【参考方案1】:您可以改用Watchman;它作为持久服务运行,并会记住您错过的事件。
您可以通过多种不同的方式来实现您的用例,但最简单的方法可能是设置触发器并让 watchman 在文件更改时直接运行您的脚本,或者使用 pywatchman 客户端绑定来持久化python 脚本运行并订阅事件并采取您想要的任何操作。
【讨论】:
以上是关于使用 inotifywait 排队事件的主要内容,如果未能解决你的问题,请参考以下文章
Linux 上的 inotifywait 是不是允许在超时期间收集事件?