linux進程監控:判斷是否存在,是否僵死進程,進行重啓和殺死重啓

最近做了一個進程調度框架,爲了確保進程正常運行,進行了輪訓檢測;在進程不存在的時候,自動重啓,如果存在,判斷是否僵死,如果僵死,就kill掉,再自動重啓;
直接上腳本:

輪詢檢測進程(cron)

創建/root/runcron 目錄, (目錄是自己隨便建的)
	在這個目錄下存放要執行的shell腳本,  參考腳本在下邊;記得設置腳本的可執行權限
	chmod u+x filename
在  /etc/crontab 中添加自己的任務,/root/runcron 是自己創建的,
*/1 * * * * root run-parts /root/runcron
這樣定時任務就自己執行了, 查看命令
tail -f /var/log/cron
日誌會有執行的記錄,如果沒有執行, 就重新啓動下crond服務,
/sbin/service crond reload   ##--->> 重新加載
/sbin/service crond restart   ## ---->重啓服務

判斷進程是否存在,從而重啓或者殺死

##腳本
#!/bin/bash
#判斷指定進程是否存在
result=`ps -ef | grep -w dbjob | grep -v grep | wc -l`
if [ $result -le 0 ]; then
    #不存在, 重啓
	nohup java -Xms512m -Xmx1024m -jar /home/project/dbjob.jar &
else    
    #存在,判斷狀態
    #取進程狀態,用來判斷是否僵死
	val=`ps -aux | grep dbjob | grep -v grep | awk '{print $8}'`
	if [ "$val" == "Z" ];then
		# 取進程ID,用來kill掉進程
		pid = `ps -aux | grep dbjob | grep -v grep | awk '{print $2}'`
		kill -9 $pid
	fi
fi
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章