如何获取 CPU 使用率百分比

如何获取 CPU 使用率百分比

目前,我正在使用python脚本将输出记录cat /proc/loadavg到文件中。然后,我会gnuplot定期绘制 CPU 负载图,以供查看。

但是,我真的很想有一个显示 CPU 使用率百分比(%user 和 %sys 等)的图表。我知道可以top得到这些数字,因为它们显示在输出的第三行。但是,我无法弄清楚如何或从哪里top获得这些信息。谷歌也没有帮助,它只是指出了/proc/loadavg人们在高 CPU 负载下遇到的问题。

如果您能提供任何关于如何将这些数字(最好是 5 分钟平均值)记录到文件中的提示,我将不胜感激。

答案1

RTFM:的手册页top很长,但最终事情变得清晰了。

我现在用的是这个:

top -bn 1 |grep "Cpu(s)" | awk '{print "user: " $2+$6 "% syst: " $4+$12+$14+$16 "% wait: " $10 "% idle: "$8"%   Total: " $2+$4+$6+$8+$10+$12+$14+$16 "%"}'

不幸的是,它很少能完美地达到 100%

@boson:~ $ top -bn 1 |grep "Cpu(s)" | awk '{print "user: " $2+$6 "% syst: " $4+$12+$14+$16 "% wait: " $10 "% idle: "$8"%   Total: " $2+$4+$6+$8+$10+$12+$14+$16 "%"}'
user: 1.2% syst: 0.7% wait: 0.8% idle: 97.4%   Total: 100.1%
@boson:~ $

另一种方法是安装sysstat包并使用mpstat

@boson:~ $ mpstat | tail -1 | awk {'print "user: " $4+$5 "% syst: " $6+$8+$9+$10+$11+$12 "% wait: " $7 "% idle: " $13 "%   Total: " $4+$5+$6+$7+$8+$9+$10+$11+$12+$13 "%"}'
user: 1.18% syst: 0.66% wait: 0.76% idle: 97.39%   Total: 99.99%
@boson:~ $

相关内容