我试图让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