需求: 利用 top 命令精确监控 CPU
准备知识: top 使用, 基本的 awk,dc(默认 bash shell 不支持小数点运算)
脚本如下
- [root@arppining scripts]# cat cpu.sh
- #!/bin/bash -
- # top -n 参数指定运行次数, 1 代表运行一次即停止, 不再等待 top 数据更新, 使用 awk 指定分割符, 提取数据
- cpu_us=`top -n 1 | grep 'Cpu(s)' | awk -F'[" "%] ' '{print $2}'`
- cpu_sy=`top -n 1 | grep 'Cpu(s)' | awk -F'[" "%] ' '{print $4}'`
- cpu_idle=`top -n 1 | grep 'Cpu(s)' | awk -F'[" "%] ' '{print $8}'`
- # 默认 bash shell 不能直接运算小数点, 所以需要借助 bc
- # bc 命令是一种支持任意精度的交互执行的计算器语言.
- # 常见用法 echo "1.23*5" | bc
- cpu_sum=$(echo "$cpu_us+$cpu_sy"|bc)
- echo "CPU_SUM: $cpu_sum%"
- echo "CPU_Idle: ${cpu_idle}%"
- # 超过阀值即发送邮件
- if [ $cpu_sum -ge 90 ];then
- echo "CPU utilization $cpu_sum" | mail -s "cpu status warning." arppinging@163.com
- fi
- [root@arppining scripts]#
运算结果
- [root@arppining scripts]# bash cpu.sh
- CPU_SUM: 2.2%
- CPU_Idle: 96.0%
- [root@arppining scripts]#
可以将脚本加入定时任务中
至此结束.
来源: http://www.bubuko.com/infodetail-2604931.html