我正在运行这个命令
grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} END {print usage "%"}'
Run Code Online (Sandbox Code Playgroud)
然而它只输出0.99xxxx%
如果我进行apt-get升级或任何过程,我认为它会超过1%.即使运行压力-c 1也不会改变它.
有没有办法准确记录CPU使用情况?服务器有1个vCPU.
需要每5秒钟记录一次这个日志.
while sleep 5; do "code" >> logfile; done
Run Code Online (Sandbox Code Playgroud)
为什么cpu加载不会超过百分之几?
因为/proc/stat
自系统上次引导以来返回聚合的CPU负载统计信息,而不是实时的.如果在重新启动后立即运行脚本,只要CPU负载本身发生更改,报告的负载可能会发生显着变化.但是,脚本运行的时间越长,较小的负载变化将影响显示的值,一段时间后,该值将基本保持不变.
如果要计算负载/proc/stat
而不使用已经可用的工具,则需要计算两个连续样本的差异,例如:
while sleep 5; do grep -w cpu /proc/stat ; done | \
awk '{
print (o2+o4-$2-$4)*100/(o2+o4+o5-$2-$4-$5) "%"
o2=$2;o4=$4;o5=$5}'
Run Code Online (Sandbox Code Playgroud)
否则,更简单但不太准确的方法可能是:
vmstat -n 5 | \
awk '{used=$13+$14;total=used+$15
if(total>0) print used*100/total "%"}'
Run Code Online (Sandbox Code Playgroud)