Shell编程---监控检查系统某进程CPU利用率

23 篇文章 2 订阅
18 篇文章 1 订阅
题目要求:使用shell脚本监控检查系统某进程CPU利用率
分析:

在对应用服务进行维护时,我们经常遇到由于CPU过高导致业务阻塞,造成业务中断的情况。CPU过高可能是业务量过负荷或者出现死循环等异常情况引起的。通过脚本对业务进程CPU进行时时监控,可以在 CPU 利用率异常时及时通知维护人员,便于维护人员及时分析,定位,以及避免业务中断等。
我们可以通过指定进程pid获得此进程 CPU 利用率,如果此进程CPU利用率超过 80%(可以根据实际情况进行调整),则输出告警,否则输出正常信息。

解答:
命令行测试:
[root@myhost~]# ps -ef | egrep tomcat | egrep root |  egrep -v "grep|vi|tail" | sed -n 1p | awk '{print $2}'
18430
[root@myhost ~]# ps -p 18430 -o pcpu 
%CPU
 0.4
[root@myhost ~]# ps -p 18430 -o pcpu |egrep -v CPU 
 0.4
 [root@myhost ~]# ps -p 18430 -o pcpu |egrep -v CPU | awk '{print $1}'       
0.4
脚本:
#!/bin/sh
source /etc/profile

#define variable
psUser=$1
psProcess=$2
pid= `ps -ef | egrep ${psProcess} | egrep ${psUser} |  egrep -v "grep|vi|tail" | sed -n 1p | awk '{print $2}'`
echo ${pid}
if [ -z ${pid} ];then
	echo "The process does not exist."
	exit 1
fi   


CpuValue=`ps -p ${pid} -o pcpu |egrep -v CPU |awk '{print $1}'`

echo ${CpuValue}

flag=`echo ${CpuValue} | awk -v tem=80 '{print($1>tem)? "1":"0"}'`

if [ ${flag} -eq 1 ];then

        echo “The usage of cpu is larger than 80%”
else
        echo “The usage of cpu is ok”
fi

注意:
CpuValue=` ps -p ${pid} -o pcpu |egrep -v CPU | awk '{print $1}' `
echo ${CpuValue} 

if [ ${CpuValue} -ge 80 ];then
		echo “The usage of cpu is larger than 80%”
	else
		echo “The usage of cpu is ok”
fi
直接用上面的代码会报错
shell脚本 line 23: [: 0.0: integer expression expected
那是因为此时CpuValue的值是字符串
在linux中shell脚本中gt,lt 和eq只能对整数操作,如果使用整数与小数对比,会出现integer expression expected错误.一种变通方法就是用管道给awk进行处理.
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值