2017-08-08 4 views
0

テキストスニペットが指定されたファイルに表示されるまで、スクリプトの実行をブロックするためのきれいなソリューションを提供してください。ログインシェルにメッセージが表示されるのを待つ方法

+0

エラーを通知し、タイムアウトを待ってタイムアウト

timeout 30s grep -q 'ProducerService started' <(tail -f logs/batch.log) 

永遠に待ちを

grep -q 'ProducerService started' <(tail -f logs/batch.log) 
を待ってバッファリングし、使用しているオペレーティングシステムにAA大きく依存。 Linuxは 'inotify'(' man 7 inotify ')をベースにしたいくつかの非標準インタフェースを提供していますが、これを行うための' bash'には何もありません。 'inotify'さえ、バッファがフラッシュされた後の変更だけを検出します。書込みプログラムが大きなバッファを使用する場合、プログラムが終了するまで(通常はバッファをフラッシュする)、ファイルサイズの検出可能な変更はありません。 '-KILL'シグナル(' kill -9')でプロセスを強制終了すると、バッファがフラッシュされずにデータが失われることに注意してください。 – cdarke

答えて

1

timeout 30s grep -q 'ProducerService started' <(tail -f logs/batch.log) || exit 1 
1

使用inotifywait
inotifywaitは効率的にファイルへの変更のために

例待つ: -

  1. は、ファイルの変更のための
  2. inotifywait -q -e modify /path/to/file/containing/snippet
  3. チェックをブロックするプロセスを強制終了し
  4. 変更が一致する場合は、スクリプトを再起動してください
関連する問題