免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2214 | 回复: 8
打印 上一主题 下一主题

请问个自动监控进程的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-24 11:26 |只看该作者 |倒序浏览
AIX5.3上有个常驻进程MmServer,属于root用户。需要每隔半小时查看一次。每查看一次进程,根据进程存活情况用/EMSC/Sendmsg给特定手机发送短信,格式为:Sendmsg  139********  进程正常/异常

小弟初学shell,但测试总是不能成功...望各位大侠帮忙...

论坛徽章:
0
2 [报告]
发表于 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里设置定时   半个小时就可以了

论坛徽章:
0
3 [报告]
发表于 2006-11-24 14:25 |只看该作者
谢谢,自己修改了一下,可以用了

论坛徽章:
0
4 [报告]
发表于 2006-11-24 17:31 |只看该作者
还有一个问题,如果我要同时监控多个进程,能否从一个记录有进程名的文件(比如ProcMon.conf)里读取进程名进行轮询监控?
如果可以,请问需要怎么编写?

我知道我的问题可能很白...但是以前从来没搞过SHELL编程,临时救急,望各位大侠能出手相救啊~~

论坛徽章:
0
5 [报告]
发表于 2006-11-24 18:07 |只看该作者
进程在不代表服务正常

论坛徽章:
0
6 [报告]
发表于 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 编辑 ]

论坛徽章:
0
7 [报告]
发表于 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 ]做比较的时候是把小数取整来进行比较的吗?如果不是的话,怎么样把小数取整呢?

论坛徽章:
0
8 [报告]
发表于 2006-11-27 16:24 |只看该作者
我太弱智了...自己编个脚本不就知道了么...再次谢谢楼上各位的帮助

论坛徽章:
0
9 [报告]
发表于 2006-11-27 16:32 |只看该作者
给你说个好办法,找一个daemontools的工具包,里面有一个叫supervise的工具,稍微改下就可以实现进程监控,比使用脚本方便多了。
你使用脚本需要每半个小时监控,而那个东西是实时监控。
或者可以用一个脚本启动程序,例
#!/bin/bash

while :
do
        ./MmServer
         wait
         echo '139********  进程重启' | Sendmsg
done
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP