学习_Linux_Shell_检查程序是否运行_主要是过滤字段

本文详细阐述了如何使用特定脚本监控服务器上运行的SA、SO和DR进程,并检查它们是否正常运行。
#!/usr/bin/ksh
cd `dirname $0`
. ./common.lib
typeset -i errcnt=0
# sa
typeset said=$(cat ${cfg_pro} | grep "^SA_NODEID=" | sed -n "s#SA_NODEID=\(.*\)#\1#p" | sed "s#;# #g")
for nodeid in $said
do
    # check the float IP has been bound here or not
    #float_ip=`./querydb.sh "select * from ProductName_T_NODE where NODETYPE = 10 and NODEID = ${nodeid}" IPADDRESS | sed "s/\s//g"`
    float_ip=`cat ${cfg_pro} | grep -i "^SA_LISTEN_IP=" | sed -n "s#SA_LISTEN_IP=\(.*\)#\1#p" | sed "s#\s##g"`
    typeset -i float_ip_cnt=`/sbin/ifconfig | grep "${float_ip}" | wc -l`
    if [ $float_ip_cnt -eq 0 ]
    then
        #echo "sa need not start in this locale machine, because \"${float_ip}\" is not bound here."
        continue
    fi    
    typeset -i count_sa=`ps -ef | grep ${LOGNAME} | grep "${ProductName_path}/bin/sa -t 10 -n ${nodeid}" | grep -v "grep" | wc -l`
    if [ $count_sa -gt 0 ]
    then
        pid=`ps -ef | grep ${LOGNAME} | grep "${ProductName_path}/bin/sa -t 10 -n" | grep -v "grep" | awk -F' ' '{print $2}' | sed -n '1p'`
        echo "sa(NODE ID: ${nodeid}, PID: ${pid}) is running."
    else
        echo "sa(NODE ID: ${nodeid}) is stopped."
        ((errcnt=errcnt+1))
    fi
done
# so
typeset soid=$(cat ${cfg_pro} | grep "^SO_NODEID=" | sed -n "s#SO_NODEID=\(.*\)#\1#p" | sed "s#;# #g")
for nodeid in $soid
do
    typeset -i count_so=`ps -ef | grep ${LOGNAME} | grep "${JAVA_HOME}/bin/java.*com.so.nodeID=${nodeid}.*com.so.nodeType=20.*" | grep "${HOME}/ProductName" | grep -v "grep" | wc -l`
    if [ $count_so -gt 0 ]
    then
        pid=`ps -ef | grep ${LOGNAME} | grep "${JAVA_HOME}/bin/java.*com.so.nodeID=${nodeid}.*com.so.nodeType=20.*" | grep "${HOME}/ProductName" | grep -v "grep" | awk -F' ' '{print $2}' | sed -n '1p'`
        echo "so(NODE ID: ${nodeid}, PID: ${pid}) is running."
    else
        echo "so(NODE ID: ${nodeid}) is stopped."
        ((errcnt=errcnt+1))
    fi
done
# dr
typeset drid=$(cat ${cfg_pro} | grep "^DR_NODEID=" | sed -n "s#DR_NODEID=\(.*\)#\1#p" | sed "s#;# #g")
for nodeid in $drid
do
    typeset -i count_dr=`ps -ef | grep ${LOGNAME} | grep "${ProductName_path}/bin/sa -t 40 -n ${nodeid}" | grep -v "grep" | wc -l`
    if [ $count_dr -gt 0 ]
    then
        pid=`ps -ef | grep ${LOGNAME} | grep "${ProductName_path}/bin/sa -t 40 -n ${nodeid}" | grep -v "grep" | awk -F' ' '{print $2}' | sed -n '1p'`
        echo "dr(NODE ID: ${nodeid}, PID: ${pid}) is running."
    else
        echo "dr(NODE ID: ${nodeid}) is stopped."
        ((errcnt=errcnt+1))
    fi
done
# result
if [ $errcnt -ne 0 ]
then
    echo "ProductName is stopped."
else
    echo "ProductName is running."
fi
return $errcnt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值