linux 程序失败自动重启

最近写了一个spark streaming 程序,但是程序跑着跑着就报错了,而且不会自动重启,以下脚本实现了程序失败自动重启

基本原理:查看程序日志文件是否有ERROR或Exception字样,有说明报错了,然后kill进程,重启程序

#!/usr/bin/env bash
#一个死循环,每20s检测一次
while true
do
 #找到最新的log,程序最新保存的日志
 logfile=$(ls -lrt /data1/db_LBS/location/log |awk '{print $NF}' | tail -n 1)
 #echo ${logfile}
 #检查程序是否出错,逻辑:日志中包含ERROR 或 Exception
 cat /data1/db_LBS/location/log/${logfile} | grep -E "ERROR|Exception" > error
 #判断 error文件是否为空,若不为空则执行if else 逻辑
 if [ -s error ]
 then
 #----kill 进程
  ps -ef | grep -i kafka.sh | awk '{print $2}' | xargs kill -9
  ps -ef | grep -i kafkadata | awk '{print $2}' | xargs kill -9
  yarn application -list | grep -i db_lbs | awk '{print $1}' | xargs yarn application -kill
  #----kill 进程
  time=$(date +"%Y%m%d%H%M%S")
  #重启程序
  sh kafka.sh > ../log/log_${time} 2>&1 &
 fi
 sleep 20s
done

 

posted @ 2018-09-14 01:27  生心无住  阅读(1506)  评论(0编辑  收藏  举报