#!/bin/sh #脚本功能描述:依据/proc/stat文件获取并计算CPU使用率 #CPU时间计算公式:CPU_TIME=user+system+nice+idle+iowait+irq+softirq #CPU使用率计算公式:cpu_usage=[(user_2 +sys_2+nice_2) - (user_1 + sys_1+nice_1)]/(total_2 - total_1)*100 #默认时间间隔 TIME_INTERVAL=5 time=$(date "+%s") LAST_CPU_INFO=$(cat /proc/stat | grep -w cpu | awk '{print $2,$3,$4,$5,$6,$7,$8}') LAST_SYS_IDLE=$(echo $LAST_CPU_INFO | awk '{print $4}') LAST_USER_BUSY=$(echo $LAST_CPU_INFO | awk '{print $1}') LAST_SYS_BUSY=$(echo $LAST_CPU_INFO | awk '{print $3}') LAST_TOTAL_CPU_T=$(echo $LAST_CPU_INFO | awk '{print $1+$2+$3+$4+$5+$6+$7}') LAST_CPU_USAGE=$(echo $LAST_CPU_INFO | awk '{print $1+$2+$3}') sleep ${TIME_INTERVAL} NEXT_CPU_INFO=$(cat /proc/stat | grep -w cpu | awk '{print $2,$3,$4,$5,$6,$7,$8}') NEXT_SYS_IDLE=$(echo $NEXT_CPU_INFO | awk '{print $4}') NEXT_USER_BUSY=$(echo $NEXT_CPU_INFO | awk '{print $1}') NEXT_SYS_BUSY=$(echo $NEXT_CPU_INFO | awk '{print $3}') NEXT_TOTAL_CPU_T=$(echo $NEXT_CPU_INFO | awk '{print $1+$2+$3+$4+$5+$6+$7}') NExT_CPU_USAGE=$(echo $NEXT_CPU_INFO | awk '{print $1+$2+$3}') #系统空闲时间 SYSTEM_IDLE=`echo ${NEXT_SYS_IDLE} ${LAST_SYS_IDLE} | awk '{print $1-$2}'` #系统使用时间 SYSTEM_BUSY=`echo ${NEXT_SYS_BUSY} ${LAST_SYS_BUSY} | awk '{print $1-$2}'` #用户使用时间 USER_BUSY=`echo ${NEXT_USER_BUSY} ${LAST_USER_BUSY} | awk '{print $1-$2}'` #用户+系统+nice时间 TOTAL_BUSY=`echo ${NExT_CPU_USAGE} ${LAST_CPU_USAGE} | awk '{print $1-$2}'` #CPU总时间 TOTAL_TIME=`echo ${NEXT_TOTAL_CPU_T} ${LAST_TOTAL_CPU_T} | awk '{print $1-$2}'` #CPU总时间百分比 CPU_USAGE=`echo ${TOTAL_BUSY} ${TOTAL_TIME} | awk '{printf "%.2f", $1/$2*100}'` #用户时间百分比 CPU_USER_USAGE=`echo ${USER_BUSY} ${TOTAL_TIME}|awk '{printf "%.2f", $1/$2*100}'` #系统时间百分比 CPU_sys_USAGE=`echo ${SYSTEM_BUSY} ${TOTAL_TIME} |awk '{printf "%.2f", $1/$2*100}'` echo "CPU Usage:${CPU_USAGE}%" $time echo "CPU UserUsage:${CPU_USER_USAGE}%" $time echo "CPU SysUsage:${CPU_sys_USAGE}%" $time