linux 進程監控和自動重啟的簡單實現


目的:linux 下服務器程序會因為各種原因dump掉,就會影響用戶使用,這里提供一個簡單的進程監控和重啟功能。

實現原理:由定時任務crontab調用腳本,腳本用ps檢查進程是否存在,如果不存在則重啟並寫入日志。

1、crontab修改

# crontab -e
*/5 * * * * /mnt/bindmonitor.sh

2、/mnt/bindmonitor.sh 的實現

#! /bin/sh

host_dir=`echo ~`                                       # 當前用戶根目錄
proc_name="/home/wkubuntu/named/sbin/named"                             # 進程名
file_name="/mnt/bindmonitor.log"                         # 日志文件
pid=0

proc_num()                                              # 計算進程數
{
    num=`ps -ef | grep $proc_name | grep -v grep | wc -l`
    return $num
}

proc_id()                                               # 進程號
{
    pid=`ps -ef | grep $proc_name | grep -v grep | awk '{print $2}'`
}

proc_num
number=$?
if [ $number -eq 0 ]                                    # 判斷進程是否存在
then 
    /home/wkubuntu/named/sbin/named  -c /home/wkubuntu/named/etc/named.conf -n 1 &
                                                        # 重啟進程的命令,請相應修改
    proc_id                                         # 獲取新進程號
    echo ${pid}, `date` >> $file_name      # 將新進程號和重啟時間記錄
fi

 

3、刪除進程測試

a、#killall -15 named

b、5分鍾后,cat /mnt/bindmonitor.log看看有無最新的記錄,進程號與# ps -ef |grep named 進程號對應。


免責聲明!

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



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