有两种方式,一种是用/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
#!/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
编辑回复