Chinaunix首页 | 论坛 | 博客
  • 博客访问: 267295
  • 博文数量: 47
  • 博客积分: 1516
  • 博客等级: 上尉
  • 技术积分: 507
  • 用 户 组: 普通用户
  • 注册时间: 2005-04-29 09:23
文章分类

全部博文(47)

文章存档

2009年(1)

2008年(3)

2007年(1)

2006年(36)

2005年(6)

分类: LINUX

2006-02-10 16:25:33

#!/bin/bash
############################################
#检查配置文件中的进程是否存在,并且根据配  #
#置文件中进程的CPU占用率阕值  内存占用率阕 #
#值来确定是否需要记录                      #
############################################
#配置文件格式
#CPU占用率阕值  内存占用率阕值  要检查的进程名
#比如
#CPU阕值 内存阕值 进程名
#5 10 isupgw
#中间使用空格分隔
rq=` date +"%Y-%m-%d %H:%M:%S" `
#设置运行目录
EXEPATH="/home/ssmn/CMcheck"
#设置输出的文件名
OUTFILE="websercheck.log"
#检查配置文件是否存在
if [ ! -r $EXEPATH/syscheck.conf ]
 then
  echo "Disposition document syscheck.conf does not exist"
  exit 0
fi
#检查是否存在日志文件
if [ ! -w $EXEPATH/$OUTFILE ]
 then
  touch $EXEPATH/$OUTFILE
fi
IFS=" "
while read -a PRO
do
 touch $EXEPATH/syscheck.tmp
 #生成存储程序运行情况的文件
 ps -A -o pcpu -o pmem -o args |grep ${PRO[2]} > $EXEPATH/syscheck.tmp
 #删除有grep的行
 cat $EXEPATH/syscheck.tmp | sed /grep/d > $EXEPATH/syscheck1.tmp
 rm $EXEPATH/syscheck.tmp
 mv $EXEPATH/syscheck1.tmp $EXEPATH/syscheck.tmp
 #初始化变量
 PRO_STATE="no"
 CPU_STATE=0
 MEM_STATE=0
 CPU_STATEU="no"
 MEM_STATEU="no"
 #读取程序运行状态文件
 CPU_STATE=$(awk 'BEGIN{temp=0;}{temp=($1>temp)?$1:temp}END{print temp}' $EXEPATH/syscheck.tmp)
 MEM_STATE=$(awk 'BEGIN{temp=0;}{temp=($2>temp)?$2:temp}END{print temp}' $EXEPATH/syscheck.tmp)
 cat $EXEPATH/syscheck.tmp|grep ${PRO[2]}>>NULL
 if [ $? -eq 0 ]
  then
   PRO_STATE="yes"
 fi
 #检查程序是否运行
 if [ $PRO_STATE = "no" ]
  then
   echo "$rq ${PRO[2]} Procedure has not moved" >> $EXEPATH/$OUTFILE
   continue
 fi
 #检查程序CPU占用率
 CPU_STATEU=$(awk 'BEGIN{if('$CPU_STATE'>'${PRO[0]}'){print "yes"}else{print "no"}}')
 if [ $CPU_STATEU = "yes" ]
  then
   echo "$rq  ${PRO[2]} Procedure CPU takes leads to be high,Take rate achieves $CPU_STATE" >> $EXEPATH/$OUTFILE
 fi
 #检查程序内存占用率
 MEM_STATEU=$(awk 'BEGIN{if('$MEM_STATE'>'${PRO[1]}'){print "yes"}else{print "no"}}')
 if [ $MEM_STATEU = "yes" ]
  then
   echo "$rq  ${PRO[2]} Procedure Procedure memory takes leads to be high,Take rate achieves $MEM_STATE" >> $EXEPATH/$OUTFILE
 fi
done < $EXEPATH/syscheck.conf
rm $EXEPATH/syscheck.tmp
exit 0
阅读(5014) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-06-10 15:17:03

获取到数据以后写入数据库,或格式化输出到文件存储就可以供其他程序使用了。无非就是通过crontab每隔段时间调用一下。

chinaunix网友2009-05-24 12:06:46

大哥,我需要跟踪下软件运行过程中各时间段的CPU、内存占用率,现在没有办法解决。你有办法吗?能帮我下吗? QQ:419617021