我有一个带有循环监视目录的bash脚本:
while true
do
if path=`inotifywait -q -r -e create --format %w%f $watchpath`; then
#modify file
fi
done
如果我没记错的话,这会带来这个问题:
如果在该目录中创建了许多文件,或者机器正忙于其他任务,inotifywait
则可以在再次到达之前创建一个文件 - 这意味着它将被忽略。
有没有办法减轻这种情况?也许有办法连续“观察”和处理修改文件的流/馈送?
一种方法是
inotifywait
在监控模式下运行,例如:不过,进程之间仍然会存在竞争,我不确定是否有办法使用 shell 实用程序来避免竞争条件。
甚至手册页都在警告下列出了这一点。
使用监控模式
-m
,因此inotifywait
文件系统更改后不会退出,而是输出到标准输出。您可以将此流通过管道传输到 readerscript,该脚本从 inotofywait 读取行并进行处理。