我正在运行一个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有没有办法触发脚本并仍然保持监视?
答案 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
脚本中添加一些内容,以防止它在最近运行时再次运行。