によって監視されるディレクトリ ツリーがありinotifywait
ます。私がやりたいことは、スクリプト (たとえば、そこからファイルを移動できるスクリプト) を遅延 (たとえば 10 秒) でトリガーすることです。したがって、このスクリプトはどのイベントでもトリガーされるのではなく、「グループ化された」イベントでトリガーされます。
バッチ スクリプト (より大きなスクリプトの一部であり、最後にメールを送信するなど) は、ファイルを別のディレクトリの対応するディレクトリに移動しますmanage_all.sh
。
#!/bin/bash
TEMPDIR="/mnt/foo/temp"
QUEUEDIR="/mnt/foo/queue"
SLOTSLEFTINQUEUE=5
for FILEPATH in $(ls -1tr $(find "$TEMPDIR" -type f -iname \*.txt) | head -n$SLOTSLEFTINQUEUE) ; do
FILESUBPATH="${FILEPATH#$TEMPDIR/}"
mv -f "$FILEPATH" "$QUEUEDIR/$FILESUBPATH"
done
これは cron で 5 分ごとに実行され、うまく機能しています。inotifywait
しかし、私はさらに 5 分待つのではなく、を使用したいと考えています。私はこれを試しましたが、manage_all.sh
すべてのイベントでスクリプトをトリガーするため、良くありません:
(echo start; inotifywait -mr -e close_write,moved_to,modify "/mnt/foo/temp") | while read line; do ./manage_all.sh; done
(スクリプトを書き直さずに) 10 秒に 1 回だけスクリプトを起動する「イベントをグループ化」することは可能ですか?
ありがとう