1

我正在运行一个 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 有没有办法触发脚本并仍然保持手表?

4

1 回答 1

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脚本中添加一些内容,以防止它在最近运行时再次运行。

于 2015-01-01T00:16:46.963 回答