• shell+crontab 实时服务进程监控重启


    #!/bin/sh
    #filename: checkProcess.sh
    #示例:每分钟检测httpd是否在运行,不在运行则重启
    #crontab -e
    # 加入:*/1 * * * * checkProcess.sh "httpd" "/etc/init.d/httpd start"
    #-------------------------------
    # 函数: checkProcess
    # 功能: 检查一个进程是否存在
    # 参数: $1 --- 要检查的进程名称(可以加入路径,增强唯一性)
    # 返回: 如果存在返回1, 否则返回0.
    #-------------------------------
    
    checkProcess()
    {
        # 检查输入的参数是否有效
        if [ "$1" = "" ]
        then
            return 0
        fi
         
        #$PROCESS_NUM获取指定进程名的数目(过滤文件名 checkProcess.sh)
        #【此处做了修订,加入grep -v "checkProcess.sh",对应修改IS_RUNNING_NUM=3 为 IS_RUNNING_NUM=1】
        PROCESS_NUM=`ps -ef | grep "$1" | grep -v "grep" | grep -v "checkProcess.sh" | wc -l`
         
        #判断进程正在运行的数量
        IS_RUNNING_NUM=1
         
        echo "Current Process num:$PROCESS_NUM"
         
        #实际进程数PROCESS_NUM小于判断为运行中的数IS_RUNNING_NUM,表示有错误,需要重新启动
        if [ $PROCESS_NUM -lt $IS_RUNNING_NUM ];
        then
            return 0
        else
            return 1
        fi
    }
     
    #如果参数1或者参数2为空,提示用法
    if [ -z "$1" -o -z "$2" ]
    then
        echo "Usage: checkProcess.sh process execCommand"
        echo 'Example: checkProcess.sh "httpd" "/etc/init.d/httpd start"'
        exit
    fi
     
    # 检查test实例是否已经存在
    # checkProcess.sh "httpd" "/etc/init.d/httpd start"
    checkProcess $1
    checkResult=$?
    if [ $checkResult -eq 0 ];
    then
        # 杀死所有test进程,可换任意你需要执行的操作
        killall -9 $1
        echo "Now execute: $2"
        # 在后台执行程序
        exec $2 &
    else
        echo "Process is running"
    fi
    
    
    
    crontab示例
    #启动apache服务
    */1 * * * * /root/shell/checkProcess.sh "/usr/sbin/httpd" "/root/shell/httpdstart.sh"
    #启动mysql服务
    */1 * * * * /root/shell/checkProcess.sh "/usr/sbin/mysqld" "/root/shell/mysqldstart.sh"
    这里为了方便(有些服务的启动命令比较长),把启动代码封装进了shell脚本中,读者可以直接写启动命令
    
    httpdstart.sh脚本如下:
    #!/bin/bash
    /usr/sbin/httpd -k start
  • 相关阅读:
    《Eric带您走近Office 2010》系列专题来啦!
    以人为本 体验至上(二)
    以人为本 体验至上(一)
    操作Static对象的多线程问题
    TroubleShoot:SilverLight中Wcf调用时出现Not Found等错误
    delegate与event的关系说明
    SharePoint对象模型性能考量
    SharePoint自带Silverlight WebPart中文输入问题处理
    关于Wcf事件多次执行的问题
    SharePoint中调试SilverLight程序
  • 原文地址:https://www.cnblogs.com/kcxg/p/10481488.html
Copyright © 2020-2023  润新知