awk linux cpu占用,LINUX 根据 /proc/stat 文件计算cpu使用率的shell脚本

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

©著作权归作者所有:来自51CTO博客作者no_shutdown_的原创作品,如需转载,请注明出处,否则将追究法律责任

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值