使用 inotifywait 排队事件
Queuing events with inotifywait
初始化源目录和目标目录。
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
,这可能会解决这个问题。
您可以使用Watchman代替;它 运行 作为一项持久服务,会记住您错过的事件。
您可以通过多种不同的方式来实现您的用例,但最简单的可能是设置触发器并直接让 watchman 运行 当文件更改时您的脚本,或者使用 pywatchman客户端绑定具有持久性 python 脚本 运行 并订阅事件并采取您想要的任何操作。
初始化源目录和目标目录。
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
,这可能会解决这个问题。
您可以使用Watchman代替;它 运行 作为一项持久服务,会记住您错过的事件。
您可以通过多种不同的方式来实现您的用例,但最简单的可能是设置触发器并直接让 watchman 运行 当文件更改时您的脚本,或者使用 pywatchman客户端绑定具有持久性 python 脚本 运行 并订阅事件并采取您想要的任何操作。