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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM