Chinaunix

标题: 请问个自动监控进程的问题 [打印本页]

作者: 龙骑士小巴    时间: 2006-11-24 11:26
标题: 请问个自动监控进程的问题
AIX5.3上有个常驻进程MmServer,属于root用户。需要每隔半小时查看一次。每查看一次进程,根据进程存活情况用/EMSC/Sendmsg给特定手机发送短信,格式为:Sendmsg  139********  进程正常/异常

小弟初学shell,但测试总是不能成功...望各位大侠帮忙...
作者: scuhkr    时间: 2006-11-24 12:27
先写个monitor.sh
#!/bin/sh
PATH=$PATH:/usr/local/bin
PS=`ps aux|grep "MmServer" | grep -v grep | grep -v pico|wc -l`

cd /EMSC/Sendmsg
if [ $PS -lt 1 ]
then
    Sendmsg  139********  进程异常
else
    Sendmsg  139********  进程正常
fi
exit
   
然后 crontabl里设置定时   半个小时就可以了
作者: 龙骑士小巴    时间: 2006-11-24 14:25
谢谢,自己修改了一下,可以用了
作者: 龙骑士小巴    时间: 2006-11-24 17:31
还有一个问题,如果我要同时监控多个进程,能否从一个记录有进程名的文件(比如ProcMon.conf)里读取进程名进行轮询监控?
如果可以,请问需要怎么编写?

我知道我的问题可能很白...但是以前从来没搞过SHELL编程,临时救急,望各位大侠能出手相救啊~~
作者: sun9527    时间: 2006-11-24 18:07
进程在不代表服务正常
作者: tiancongxin    时间: 2006-11-25 11:03
#!/bin/bash
PATH=$PATH:/usr/local/bin

sendmesg=/EMSC/Sendmsg
proclist=/path/to/ProcMon.conf

while read procname
do
        procnum=$(pgrep "${procname}" | wc -l )
        if [ ${procnum} -lt 1  ];then
                ${sendmesg}  $(printf  "139********  ${procname}进程异常")
        else
                ${sendmesg}  $(printf  "139********  ${procname}进程正常")
        fi

done<${proclist}

在ProcMon.conf中每行放置一个进程名(不要有空行)

[ 本帖最后由 tiancongxin 于 2006-11-25 11:11 编辑 ]
作者: 龙骑士小巴    时间: 2006-11-27 16:10
谢谢楼上的
这两天恶补了shell编程指南,有点概念了...
还有个问题,这个监控进程CPU占用的SHELL,进程占用CPU达到25%就报警
#!/bin/sh
PATH=$PATH:/usr/local/bin


proclist=/EMSC/ProcMon.conf

while read procname
do

echo $procname
cpu=`ps -ef -o pcpu -o args|awk '{print $1,$2}'|grep $procname|awk '{print $1}'`

if [ $cpu -lt 25 ]
then
echo "ok"
else
Sendmsg 139******** ${procname}" iscpu"
fi

done<${proclist}

但是因为输出的CPU占用率是*.*的小数形式。
我想确认一下,[ $cpu -lt 25 ]做比较的时候是把小数取整来进行比较的吗?如果不是的话,怎么样把小数取整呢?
作者: 龙骑士小巴    时间: 2006-11-27 16:24
我太弱智了...自己编个脚本不就知道了么...再次谢谢楼上各位的帮助
作者: xpkiller    时间: 2006-11-27 16:32
给你说个好办法,找一个daemontools的工具包,里面有一个叫supervise的工具,稍微改下就可以实现进程监控,比使用脚本方便多了。
你使用脚本需要每半个小时监控,而那个东西是实时监控。
或者可以用一个脚本启动程序,例
#!/bin/bash

while :
do
        ./MmServer
         wait
         echo '139********  进程重启' | Sendmsg
done




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2