2016-09-19 11 views
1

私は受け取るまでログを読む必要があります“ Server StartupBASH Linuxは特定の文字列までログを読み込みません。

文字列が“ startup ”になると、tailコマンドを終了して、残りのスクリプト操作を続行する必要があります。

は今、構文は次のとおりです。事前に

cd /opt/path/path/path 
LOG_FILE=$(ls -ltr | tail -1 |awk '{print $9}') 
tail -f $LOG_FILE 

おかげ

+0

'ls -lrt'を使用しているのは、ディレクトリに最新のファイルを見つけるのはお勧めできません。最新のファイル名にスペースが含まれていますか? '' latest file "'のようなもの –

答えて

4
stdbuf -oL tail -f log.file | stdbuf -iL awk '/startup/ {print "Match found";exit}' 

これは、文字列startupをチェックし、それが発見された場合、それはログから退出し、「マッチが見つかりました」と表示しますモニタリング。 stdbufは、tailとawkにバッファされた行を提供します。

+0

'stdbuf'を使って' tail 'にバッファされた行を書き込ませ、 'awk'はstdinの行バッファを読みとることを推奨します。 IOバッファがフラッシュされるまで、スクリプトは待たなければならないでしょう。このように 'stdbuf -oL tail -f log.file | stdbuf -iL awk ... ' – hek2mgl

+1

@ hek2mgl、ありがとう。ポイントは指摘した。 –

+0

ご利用いただきありがとうございます – Luca

関連する問題