我試圖讓shell腳本識別應用程序實例何時出現。這樣它可以繼續發佈命令。循環外殼腳本,直到成功記錄日誌消息
我一直在想這將是這樣的:
#/bin/bash
startApp.sh
while [ `tail -f server.log` -ne 'regex line indicating success' ]
do
sleep 5
done
echo "App up"
但是,即使這個工作,它不會解決一些顧慮:
- 如果有什麼應用程序沒有按」 t會出現,它會等多久
- 如果在將應用程序啓動時出現錯誤怎麼辦
- 如何捕獲日誌行並將其回顯
我閉上了,還是有更好的辦法?我想這是其他管理員不得不克服的問題。
編輯:
我發現這對超級用戶
https://superuser.com/questions/270529/monitoring-a-file-until-a-string-is-found
tail -f logfile.log | while read LOGLINE
do
[[ "${LOGLINE}" == *"Server Started"* ]] && pkill -P $$ tail
done
我這個唯一的問題是,它可能永遠不會退出。有沒有辦法在最長時間內添加?
如果statup失敗會發生什麼? –
嗯,這是舊的,但如果啓動失敗,你應該看到在控制檯上,並按下ctrl-c退出。最終,--pid標誌會看到睡眠過程在180秒內退出,並終止尾部,最終導致整個腳本退出。 – tpederson