1

ファイルが変更、作成、または削除されるたびに、ファイルのデータベースを同期する関数を呼び出す bash スクリプトをトリガーする inotify 待機スクリプトを実行しています。

#!/bin/sh

while inotifywait -r -e modify -e create -e delete /var/my/path/Documents; do
  cd /var/scripts/
  ./sync.sh
done

これは実際には非常にうまく機能しますが、同期スクリプトが時計を実行するのにかかる 10 秒間は追加の変更を取得しません。同期が既にディレクトリを参照しており、監視が再確立されていないために inotifywait によって検出されない追加の変更が発生する場合があります。

inofitywait がスクリプトをトリガーし、監視を維持する方法はありますか?

4

1 に答える 1

0

-mイベントごとに終了するのではなく、継続的に実行されるようにオプションを使用します。

inotifywait -q -m -r -e modify -e create -e delete /var/my/path/Documents | \
    while read event; do
        cd /var/scripts
        ./sync.sh
    done

これには実際には逆の問題があります。同期スクリプトの実行中に複数の変更が発生すると、その回数だけ再実行されます。sync.sh最近実行したスクリプトが再度実行されないように、スクリプトに何かを追加することをお勧めします。

于 2015-01-01T00:16:46.963 に答える