CPU使用率的统计方式

回复 收藏
有两种方式,一种是用/proc/stat这个文件来统计,
#!/bin/bash


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

sleep 60

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

SYS_IDLE=`expr $SYS_IDLE_2 - $SYS_IDLE_1`
Total=`expr $Total_2 - $Total_1`

SYS_IDLE_USAGE=`expr $SYS_IDLE/$Total*100 |bc -l`
SYS_Rate=`expr 100-$SYS_IDLE_USAGE |bc -l`
Disp_SYS_Rate=`expr "scale=2; $SYS_Rate/1" |bc`
Date=`date -d "1 min ago" +%m/%d-%H:%M:%S`

echo -e "$Date\t $Disp_SYS_Rate%" >> /tmp/shell/data/real_time_cpu.txt

另一种是通过sar来统计
#!/bin/bash

cpu_average=`sar 1 60 |grep Average |awk '{printf ("%.2f\n", $3+$4+$5+$6+$7)}'`
time=`date -d "1 min ago" +%m/%d-%H:%M:%S`

echo -e "$time\t$cpu_average" >> /tmp/shell/data/real_time_cpu.txt
2016-06-05 20:17 举报
已邀请:

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: