linux下cpu使用率shell脚本和分析

从网上找的脚本。现在在学习shell脚本的编写,又对脚本进行分析注释了一下

1、shell脚本:

#!/bin/sh

##echo user nice system idle iowait irq softirq
CPULOG_1=$(cat /proc/stat | grep 'cpu ' | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}')
SYS_IDLE_1=$(echo $CPULOG_1 | awk '{print $4}')
Total_1=$(echo $CPULOG_1 | awk '{print $1+$2+$3+$4+$5+$6+$7}')

sleep 5

CPULOG_2=$(cat /proc/stat | grep 'cpu ' | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}')
SYS_IDLE_2=$(echo $CPULOG_2 | awk '{print $4}')
Total_2=$(echo $CPULOG_2 | awk '{print $1+$2+$3+$4+$5+$6+$7}')

SYS_IDLE=`expr $SYS_IDLE_2 - $SYS_IDLE_1`

Total=`expr $Total_2 - $Total_1`
SYS_USAGE=`expr $SYS_IDLE/$Total*100 |bc -l`

SYS_Rate=`expr 100-$SYS_USAGE |bc -l`

Disp_SYS_Rate=`expr "scale=3; $SYS_Rate/1" |bc`
echo $Disp_SYS_Rate%

2、对shell脚本添加注释:

#!/bin/sh

##echo user nice system idle iowait irq softirq
CPULOG_1=$(cat /proc/stat | grep 'cpu ' | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}')

## cat /proc/stat :显示出文件stat(CPU时间的分配信息保存在/proc/stat文件中,包括用户态,系统态,空闲态的时间)
##  grep 'cpu ':过滤出CPU总的使用情况
##  awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}'):打印出2——8列对应的时间

SYS_IDLE_1=$(echo $CPULOG_1 | awk '{print $4}')

##  将CPULOG_1中的第四列的值赋给SYS_IDLE_1

Total_1=$(echo $CPULOG_1 | awk '{print $1+$2+$3+$4+$5+$6+$7}')

## 将CPULOG_1中的第1——7列的值相加后的值赋给Total_1

sleep 5
## 等5秒钟
CPULOG_2=$(cat /proc/stat | grep 'cpu ' | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}')
SYS_IDLE_2=$(echo $CPULOG_2 | awk '{print $4}')
Total_2=$(echo $CPULOG_2 | awk '{print $1+$2+$3+$4+$5+$6+$7}')

SYS_IDLE=`expr $SYS_IDLE_2 - $SYS_IDLE_1`

## 将表达式$SYS_IDLE_2 - $SYS_IDLE_1相减的结果赋给SYS_IDLE,即空闲的总时间

Total=`expr $Total_2 - $Total_1`

## 将表达式$Total_2 - $Total_1相减的结果赋给Total,即总的使用时间

SYS_USAGE=`expr $SYS_IDLE/$Total*100 |bc -l`

## expr $SYS_IDLE/$Total*100:空闲时间的表达式
## bc -l : 是将前面的表达式的结果计算出来并已标准的数学函数输出

SYS_Rate=`expr 100-$SYS_USAGE |bc -l`

## 计算出使用时间

Disp_SYS_Rate=`expr "scale=3; $SYS_Rate/1" |bc`

## 计算出的使用率结果保留3位小数点

echo $Disp_SYS_Rate%

## 将使用率结果输出到终端

3、cpu 使用率的计算分析:  cat /proc/stat

有以上信息可以得出 cpu是4核的,cpu这项对应信息如下
cpu     user    nice    system  idle    iowait  irq softirq steal   guest   guest_nice
user:用户态的CPU时间
nice:低优先级程序所占用的用户态的cpu时间。
system:系统态的CPU时间
idle:CPU空闲的时间(不包含IO等待)
iowait:等待IO响应的时间
irq:处理硬件中断的时间
softirq:处理软中断的时间
steal:其他系统所花的时间(个人理解是针对虚拟机)
guest:运行时间为客户操作系统下的虚拟CPU控制(个人理解是访客控制CPU的时间)
guest_nice:低优先级程序所占用的用户态的cpu时间。(访客的)
 

具体详情可以参考 https://www.cnblogs.com/li-hao/archive/2013/03/19/2970056.html

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值