2016-09-19 40 views
1

我必須讀取日誌直到我收到「 Server Startup 」。BASH 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行緩衝。 Otherwiese腳本將不得不等待,直到IO緩衝區被刷新。像這樣:'stdbuf -oL tail -f log.file | stdbuf -iL awk ...' – hek2mgl

+1

@ hek2mgl,謝謝。 Point指出。 –

+0

感謝您的可用性 – Luca

相關問題