我们在写shell脚本的时候,经常启动一个服务以后,需要等到他的日志打印出某些信息的时候才能启动下一个服务或者进行下一个操作。可以用此脚本实现
#!/bin/bash
#检测日志关键字 $1传递日志目录 $2传递关键字
check_wait_log () {
tail -n +0 -vfn0 $1 | while read line;
do
echo $line
#关键字出现后退出日志打印
echo "$line" | grep "$2" >/dev/null 2>&1
if [ $? = 0 ];then
break
fi
#退出tail命令
ps -aux | grep "tail -n" | grep -v "grep" | awk '{print $2}' | while read line;
do
kill -9 $line
done
done
}
#当启动mysql服务以后,当mysql日志出现“ready for connections"关键字,则表示mysql可以进行连接了
check_wait_log /home/mysql/mysqld.log "ready for connections"