为什么 inotifywait 在对其正在监视的文件进行 git 检出后停止持续工作?
Why does inotifywait stop working consistently after a git checkout on the files it's watching?
我正在 运行宁 inotifywait
文件目录:
inotifywait --quiet --monitor \
--event modify \
--event moved_to \
--event moved_from \
--event move \
--event unmount \
--event create \
--format '%w' /path/to/*.json | \
while read FILE; do
echo "$FILE was changed."
done
在我 运行 git checkout [some existing branch name]
之前,这一直很好用。之后,inotifywait
停止响应检出分支时 git
更新的文件(即停止响应两个分支之间不同的文件)。
为什么 inotifywait
停止响应这些文件?有没有办法让它重新查看这些文件?
inotifywait --event create /path/to/*.json
根本 不起作用,因为已经存在的文件不能有 create
事件,并且 /path/to/*.json
在 inotifywait
开始之前被 shell 替换为已经存在的文件名列表;任何不存在的文件都不会被包括在内,当 inotifywait
open()
s 现有文件时,它只会获得先前存在的副本,因此甚至看不到任何新创建的文件以后同名
改为关注目录:
inotifywait --quiet --monitor \
--event modify \
--event moved_to \
--event moved_from \
--event move \
--event unmount \
--event create \
--format '%w' /path/to | \
while IFS= read -r file; do
[[ $file = *.json ]] || continue # ignore any non-*.json files
echo "$file was changed."
done
我正在 运行宁 inotifywait
文件目录:
inotifywait --quiet --monitor \
--event modify \
--event moved_to \
--event moved_from \
--event move \
--event unmount \
--event create \
--format '%w' /path/to/*.json | \
while read FILE; do
echo "$FILE was changed."
done
在我 运行 git checkout [some existing branch name]
之前,这一直很好用。之后,inotifywait
停止响应检出分支时 git
更新的文件(即停止响应两个分支之间不同的文件)。
为什么 inotifywait
停止响应这些文件?有没有办法让它重新查看这些文件?
inotifywait --event create /path/to/*.json
根本 不起作用,因为已经存在的文件不能有 create
事件,并且 /path/to/*.json
在 inotifywait
开始之前被 shell 替换为已经存在的文件名列表;任何不存在的文件都不会被包括在内,当 inotifywait
open()
s 现有文件时,它只会获得先前存在的副本,因此甚至看不到任何新创建的文件以后同名
改为关注目录:
inotifywait --quiet --monitor \
--event modify \
--event moved_to \
--event moved_from \
--event move \
--event unmount \
--event create \
--format '%w' /path/to | \
while IFS= read -r file; do
[[ $file = *.json ]] || continue # ignore any non-*.json files
echo "$file was changed."
done