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}" is
cpu"
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