背景「監視」に変更時にコマンドを実行させる方法

背景「監視」に変更時にコマンドを実行させる方法

watch特定のコマンドやファイル(たとえばw)に使用し、バックグラウンドで実行し、変更を通知したいと思います。私は以下を試しました:

(watch -g cat tmp && echo "changed") &

ただし、内容を変更すると、何も起こらずにtmp前景watchにインポートしたときにのみ終了しますfg

watchこれをバックグラウンドで実行し、変更を通知する方法はありますか?

ベストアンサー1

簡単な方法はinotifywaitモニター-mモードを使用することです。つまり、最初に記録されたイベント以降に終了するのではなく、永遠に実行することです。監視するファイル/ディレクトリの変更などの通気孔を指定したり、-e開く、アクセス、書き込みなどのすべてのイベントを表示したりしません。man inotifywait可能なイベントの詳細については、リソースをご覧ください。

$inotifywait -m -e modify tmp &
$echo 1 >> tmp
tmp MODIFY

欠点は、このバージョンではコマンドを直接実行する必要がなく、標準の通知のみを受信できることです。コマンドを明示的に実行し、ファイル/ディレクトリを無期限に監視するには、同様のアプローチを使用できます(-quietモードを使用)。

while ((1)) ; do \
   inotifywait -q -e modify tmp && echo "tmp was changed" \
done &

おすすめ記事