inotifywait在脚本运行时错过了事件

时间:2014-12-31 23:58:53

标签: linux bash inotifywait

我正在运行一个inotify等待脚本,该脚本触发一个bash脚本来调用一个函数,以便在修改,创建或删除文件时同步我的文件数据库。

#!/bin/sh

while inotifywait -r -e modify -e create -e delete /var/my/path/Documents; do
  cd /var/scripts/
  ./sync.sh
done

这实际上工作得很好,除了在10秒内我的同步脚本运行手表不会拾取任何其他更改。在某些情况下,同步已经查看了目录,并且发生了一个由inotifywait未检测到的额外更改,因为它尚未重新建立监视。

inofitywait有没有办法触发脚本并仍然保持监视?

1 个答案:

答案 0 :(得分:0)

使用-m选项使其连续运行,而不是在每次事件后退出。

inotifywait -q -m -r -e modify -e create -e delete /var/my/path/Documents | \
    while read event; do
        cd /var/scripts
        ./sync.sh
    done

这实际上会产生相反的问题:如果在同步脚本运行时发生多次更改,它将再次运行多次。您可能希望在sync.sh脚本中添加一些内容,以防止它在最近运行时再次运行。