を通過するサービスがありますrsync
。これが起こったら、サーバー側プログラムの実行をトリガーしたいと思います。
このコマンドのおかげで、inotifywait
ファイルやディレクトリの変更を監視するのは非常に簡単です。しかし、私は通知を受けたいです。バーストを一度だけ修正してください。これは、アップロード後のプロセスが重く変更されたすべてのファイルに対してこれを実行したくないためです。
イベントタイムスタンプに基づいていくつかのハッキングを思い出すのは大きな努力ではありません...しかし、私はこれがかなり一般的な問題だと思います。しかし、私は役に立つものが見つかりませんでした。
突然の問題を解決するための奇妙なコマンドがありますか?私は次のように使用できることを考えています。
inotifywait -m "$dir" $opts | detect_burst --execute "$post_upload"
ベストアンサー1
自分の回答に従ってシェルを使用したい場合は、タイムアウト時に戻りコードを> 128に設定するタイムアウトオプションをread
利用できます。-t
たとえば、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
最初にバーストの終わりを検出したくない場合は、初期ブロッキング読み出しから開始することをお勧めします。