Linux
使用 inotifywait 監控突發事件
我有一項服務偶爾會通過
rsync
. 發生這種情況時,我想觸發伺服器端過程的執行。由於該
inotifywait
命令,監視文件或目錄的更改相當容易。但是,我希望每次修改時只收到一次通知,因為上傳後的過程很繁重,並且不想為每個修改的文件執行它。根據事件時間戳想出一些hack應該不是很大的努力……但我相信這是一個非常普遍的問題。我找不到任何有用的東西。
是否有一些聰明的命令可以計算出爆發?我在想我可以用這種方式使用的東西:
inotifywait -m "$dir" $opts | detect_burst --execute "$post_upload"
根據您自己的答案,如果您想使用 shell
read
,您可以利用-t
timeout 選項,如果有超時,它將返回程式碼設置為 >128。例如,您的burst
腳本可以鬆散地變成: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
您可能希望從初始阻塞讀取開始,以避免在開始時檢測到突發結束。