shell监控日志关键字,并杀死有故障进程重启
在实际开发当中,会遇到很多程序运行一段时间出现故障,例如flume没有采集日志,写hbase的程序出现”Too many open files”或”session Time out”。除了把代码写健壮性,尽量能做到7*24小时零故障保障,还可以通过crontab来配置定时检测的脚本,分析程序的日志,根据关键来产生预警,或者来进行kill掉进程进行重启。
#bin/sh
is_equal(){
if [ $1 eq '1' ]
then
echo $pid
kill -9 $pid
echo $?
else exit
fi
//$7是gawk分割netstat -tunpl | grep 8083产生字符串的位置
my_pid=`netstat -tunpl | grep 8083 | gawk '{print $7}'`
cur_statu=`cat /app/my.log | tail -n 1 | grep 'Too many open files '|gawk -F 'Too many open files' '{print 1}'`
echo $cur_statu
is_equal $cur_statu $my_pid
sleep 5
nohup java -jar my.jar >/app/my.log 2>&1 &
echo 重启程序