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
欠点は、このバージョンではコマンドを直接実行する必要がなく、標準の通知のみを受信できることです。コマンドを明示的に実行し、ファイル/ディレクトリを無期限に監視するには、同様のアプローチを使用できます(-q
uietモードを使用)。
while ((1)) ; do \
inotifywait -q -e modify tmp && echo "tmp was changed" \
done &