LINUX 根據 /proc/stat 文件計算cpu使用率的shell腳本

#!/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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章