zoukankan      html  css  js  c++  java
  • linux下通过脚本实现自动重启程序的方法

    无论什么程序都不可能完美无缺,理论上,任何程序都有 Core Dump 的一天,正式运营的程序,尤其是服务器程序,一旦 Core Dump ,后果不堪设想,有过服务器开发经验的朋友,一定都经历过深夜美梦中,被电话惊醒的惨痛经历,手忙脚乱把服务器重新启动,第二天上班还要被老板一顿狠批。 所以,程序发生错误时自动重启变得很重要。这里集中讨论 linux 实现自动重启程序的方法。

      linux 下实现程序的自动重启有很多方法,这里我们介绍的是通过自己写脚本来实现。

      自动重启脚本,假定需要实现重启的程序名为 test ,我们这里通过判断进程数目来判断程序是否正常。

      ps -ef | grep "$1" | grep -v "grep" | wc –l 是获取 $1 (本例中为 test )的进程数,脚本根据进程数来决定下一步的操作。通过一个死循环,每隔 1 秒检查一次系统中的指定程序的进程数。

    代码如下:

    #!/bin/sh
                   
    #------------------------------------------------------------------------------
    # 函数: CheckProcess
    # 功能: 检查一个进程是否存在
    # 参数: $1 --- 要检查的进程名称
    # 返回: 如果存在返回0, 否则返回1.
    #------------------------------------------------------------------------------
            CheckProcess(){ 
    # 检查输入的参数是否有效 
            if [ "$1" = "" ]; 
            then   
               return 1 
            fi   
    #$PROCESS_NUM获取指定进程名的数目,为1返回0,表示正常,不为1返回1,表示有错误,需要重新启动 
            PROCESS_NUM=`ps -ef | grep "$1" | grep -v "grep" | wc -l`  
            if [ $PROCESS_NUM -eq 1 ]; 
            then   
               return 0 
            else   
               return 1 
            fi
            }
    # 检查test实例是否已经存在
            while [ 1 ] ; do
               CheckProcess "CheckQQ_RET"
                 if [ $CheckQQ_RET != 4 ];
               then
            # 杀死所有test进程,可换任意你需要执行的操作 
               killall -9 test 
               exec ./test &  
            fi
               sleep 1
            done

      脚本start:
      加入limit coredumpsize 102400,设置core file的大小,一旦程序Core Dump,有迹可寻。在该脚本中后台执行check脚本,可以省去很多麻烦,

  • 相关阅读:
    POJ 1659 Frogs' Neighborhood
    zoj 2913 Bus Pass(BFS)
    ZOJ 1008 Gnome Tetravex(DFS)
    POJ 1562 Oil Deposits (DFS)
    zoj 2165 Red and Black (DFs)poj 1979
    hdu 3954 Level up
    sgu 249 Matrix
    hdu 4417 Super Mario
    SPOJ (BNUOJ) LCM Sum
    hdu 2665 Kth number 划分树
  • 原文地址:https://www.cnblogs.com/lcword/p/5849335.html
Copyright © 2011-2022 走看看