公司生产服务器通过配置文件来控制进程连接数量,当没有进程或进程连接数与配置文件中配置不一致,则导致应用出现故障,影响业务正常运行。现采用脚本方式来对进程进行检测。


配置文件如下:


#max arguments = 10;
#Subsystem Command max min para_area
    FLD foldSvr 1 1       *Folder server
#    MON         dcxmonisv       1       1       *Monitor server
    HST dcxhstsv 1 1       *TCP permanence server
#    SHT         possvr          1       1       *TCP brevity server
#    TIM timersvr 1 1       *Timer server
#    SEC secuSrv   1 1       *Security server
SEC2 secuSrv3   1 1       *Security server3
    APP         TransRcv        2       2       *App server
WTH         HTServer        10      10       *EHT server
POSP         MoniPosp        2      2       *MONIPOSP server
SMSP         SMSRcv        1      1       *SMSRcv server
#    CHG         ComChg          1       1       *Com server
#    MOD         TransMod        1       1       *Mod server
#    DCS         DCSP2Svr   1    1    *DCSP2 server
#    JNI      JNISocketServer 1    1    *JNISocketServer
#    SZT      SZTransServer 1    1    *SZTransServer
#    NJT      NJTransServer 1    1    *NJTransServer
# SZS     SZTransServer  1   1   *SZTransServer


分析:

  上图为服务器配置文件,#为注释选项,排除注释的,则是我们需要的信息。

  例如:

  

WTH         HTServer        10      10       *EHT server

   HTServer 为进程名

  第一个 10 为连接数

  那么我们需要监控的对象就有了分别为

  

  foldSvr/1

   dcxhstsv/1

   secuSrv3/1

   TransRcv/2

   HTServer/10

   MoniPosp/2

   SMSRcv/1

   

脚本:

#!/bin/ksh
servername="
foldSvr/1
dcxhstsv/1
secuSrv3/1
TransRcv/2
HTServer/10
MoniPosp/2
SMSRcv/1"
for i in $servername; do
    pid=`echo $i | cut -d/ -f1`
    num=`echo $i | cut -d/ -f2`
    current_num=`ps -ef| grep $pid |  grep -v grep | wc -l`
    if [ $num -eq $current_num ]
        then
            echo "ok"
        else
            echo "加入重启命令"
            exit
    fi
done