目前,我正在使用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:~ $