公司生产服务器通过配置文件来控制进程连接数量,当没有进程或进程连接数与配置文件中配置不一致,则导致应用出现故障,影响业务正常运行。现采用脚本方式来对进程进行检测。
配置文件如下:
#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
转载于:https://blog.51cto.com/haolulu/1349006