目的:
linux 下服務(wù)器程序會因?yàn)楦鞣N原因dump掉,就會影響用戶使用,這里提供一個簡單的進(jìn)程監(jiān)控和重啟功能。
實(shí)現(xiàn)原理:
由定時任務(wù)crontab調(diào)用腳本,腳本用ps檢查進(jìn)程是否存在,如果不存在則重啟并寫入日志。
crontab修改
# crontab -e
*/5 * * * * /mnt/bindmonitor.sh
/mnt/bindmonitor.sh 的實(shí)現(xiàn)
#! /bin/sh
host_dir=`echo ~` # 當(dāng)前用戶根目錄
proc_name="/home/wkubuntu/named/sbin/named" # 進(jìn)程名
file_name="/mnt/bindmonitor.log" # 日志文件
pid=0
proc_num() # 計算進(jìn)程數(shù)
{
num=`ps -ef | grep $proc_name | grep -v grep | wc -l`
return $num
}
proc_id() # 進(jìn)程號
{
pid=`ps -ef | grep $proc_name | grep -v grep | awk '{print $2}'`
}
proc_num
number=$?
if [ $number -eq 0 ] # 判斷進(jìn)程是否存在
then
/home/wkubuntu/named/sbin/named -c /home/wkubuntu/named/etc/named.conf -n 1 &
# 重啟進(jìn)程的命令,請相應(yīng)修改
proc_id # 獲取新進(jìn)程號
echo ${pid}, `date` >> $file_name # 將新進(jìn)程號和重啟時間記錄
fi
刪除進(jìn)程測試
a. #killall -15 named
b. 5分鐘后,cat /mnt/bindmonitor.log看看有無最新的記錄,進(jìn)程號與# ps -ef |grep named 進(jìn)程號對應(yīng)。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。