我想设置 inotifywait 以便它监视一个文件夹,并且当将某些内容复制到该文件夹(使用 rsync 的 lsyncd)时,我希望 inotifywait 坐下来等到 rsync 完成,然后再调用脚本来处理新文件夹。
我一直在网上研究是否有人这样做,但我没有找到太多。
尽管我了解一些基础知识,但我并不是最精通 bash 脚本。
这是我发现的一个小脚本,它会暂停一秒钟,但每次传输仍会触发十几个事件:
EVENTS="CLOSE_WRITE,MOVED_TO"
if [ -z "$1" ]; then
echo "Usage: $0 cmd ..."
exit -1;
fi
inotifywait -e "$EVENTS" -m -r --format '%:e %f' . | (
WAITING="";
while true; do
LINE="";
read -t 1 LINE;
if test -z "$LINE"; then
if test ! -z "$WAITING"; then
echo "CHANGE";
WAITING="";
fi;
else
WAITING=1;
fi;
done) | (
while true; do
read TMP;
echo $@
$@
done
)
我很乐意提供更多细节或信息。
谢谢你。