使用inotifywait对事件进行排队

时间:2015-02-26 03:33:47

标签: inotify inotifywait inotify-tools

初始化源目录和目标目录。

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 个答案:

答案 0 :(得分:0)

您可以使用Watchman代替;它作为持久服务运行,并会记住您错过的事件。

您可以通过多种不同的方式实现用例,但最简单的方法是设置触发器并让watchman在文件更改时直接运行脚本,或者使用pywatchman客户端绑定来持久化python脚本运行并订阅事件并采取您喜欢的任何操作。