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


配置文件如下:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#max arguments = 10;
#Subsystem Command max min para_area
FLD foldSvr 11*Folder server
#    MON         dcxmonisv       11*Monitor server
HST dcxhstsv 11*TCP permanence server
#    SHT         possvr          11*TCP brevity server
#    TIM timersvr 11*Timer server
#    SEC secuSrv   11*Security server
SEC2 secuSrv3   11*Security server3
APP         TransRcv        22*App server
WTH         HTServer        1010*EHT server
POSP         MoniPosp        22*MONIPOSP server
SMSP         SMSRcv        11*SMSRcv server
#    CHG         ComChg          11*Com server
#    MOD         TransMod        11*Mod server
#    DCS         DCSP2Svr   11*DCSP2 server
#    JNI      JNISocketServer 11*JNISocketServer
#    SZT      SZTransServer 11*SZTransServer
#    NJT      NJTransServer 11*NJTransServer
# SZS     SZTransServer  11*SZTransServer


分析:

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

  例如:


1
WTH         HTServer        1010*EHT server

   HTServer 为进程名

  第一个 10 为连接数

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


  foldSvr/1

  dcxhstsv/1

  secuSrv3/1

  TransRcv/2

  HTServer/10

  MoniPosp/2

  SMSRcv/1


脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/ksh
servername="
foldSvr/1
dcxhstsv/1
secuSrv3/1
TransRcv/2
HTServer/10
MoniPosp/2
SMSRcv/1"
fori 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