inotifywaitを使用した緊急事態の監視

inotifywaitを使用した緊急事態の監視

を通過するサービスがあります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

最初にバーストの終わりを検出したくない場合は、初期ブロッキング読み出しから開始することをお勧めします。

おすすめ記事