linux – 使用inotifywait监控一系列事件

我有一个服务,通过rsync偶尔在某个服务器端目录中发布内容.当发生这种情况时,我想触发服务器端程序的执行.

由于inotifywait命令,监视文件或目录以进行更改非常容易.但是,我希望每次突发修改只通知一次,因为上传后的过程很繁重,并且不想为每个修改过的文件执行它.

根据事件时间戳提出一些黑客攻击不应该是一项巨大的努力……我相信这是一个非常普遍的问题.虽然我找不到任何有用的东西.

是否有一些聪明的命令可以找出爆发?我在考虑以这种方式使用的东西:

inotifywait -m "$dir" $opts | detect_burst --execute "$post_upload"

解决方法:

根据您自己的答案,如果您想使用shell读取,您可以利用-t timeout选项,如果存在超时,则将返回代码设置为> 128.例如,您的爆发脚本可以松散地变为:

interval=$1; shift
while :
do  if read -t $interval
    then    echo "$REPLY"            # not timeout
    else    [ $? -lt 128 ] && exit   # eof
            "$@"
            read || exit    # blocking read infinite timeout
            echo "$REPLY"
    fi
done

您可能希望从初始阻塞读取开始,以避免在开始时检测到突发结束.

上一篇:inotifywait+rsync做实时服务器文件同步(程序流写入可以用,例如java创建文件等)


下一篇:linux – 修改和保存文件时inotify delete_self