【发布时间】:2016-06-10 07:33:22
【问题描述】:
有没有办法在 CentOS 中获取 CPU 使用率?我需要解析这些信息并从 Perl 脚本中绘制它,所以它最好是一个简单的工具,可以打印出一个单一的输出。
【问题讨论】:
标签: performance unix cpu centos
有没有办法在 CentOS 中获取 CPU 使用率?我需要解析这些信息并从 Perl 脚本中绘制它,所以它最好是一个简单的工具,可以打印出一个单一的输出。
【问题讨论】:
标签: performance unix cpu centos
更简单,看/proc/loadavg,它显示如下:
$ cat /proc/loadavg
0.37 0.67 0.68 1/312 8594
前三个数字是“处理当前负载所需的 CPU 数量”。这意味着在多核上您可以毫无问题地加载 5。这三个数字在不同的时间间隔(1、5 和 15 分钟,根据man uptime)进行平均
【讨论】:
我实际上为此使用了 /proc/stat.. 这是我用于 dzen2 小部件的 python 的重要部分。
while(1):
f = file("/proc/stat","r")
fcon = f.read().split("\n")[0].split()
new.user, unice, new.sys, new.idle, new.iowait = [
int(x) for x in fcon[1:6] ]
new.user += unice
master.user = new.user - old.user
master.sys = new.sys - old.sys
master.idle = new.idle - old.idle
master.iowait = new.iowait - old.iowait
maxval = master.user + master.sys + master.idle + master.iowait
curval = master.user + master.sys + master.iowait
old.copy(new)
print (float(curval)/maxval) * 100 )
time.sleep(1)
这会按秒打印处理器的使用百分比。
我知道语言错误,但您应该能够了解输出的哪些列指的是什么。
【讨论】:
您可以在批处理模式下使用 top 并进行 1 次(或更多)次迭代。然后用grep解析一下。
$ top -b -n 1 | grep -2 "load average"
top - 12:08:31 up 14 days, 19:03, 26 users, load average: 0.25, 0.45, 0.37
Tasks: 219 total, 1 running, 217 sleeping, 0 stopped, 1 zombie
Cpu(s): 4.2%us, 0.6%sy, 0.0%ni, 94.0%id, 1.0%wa, 0.0%hi, 0.3%si, 0.0%st
或
$ top -b -n 1 | grep "Cpu(s)\:"
Cpu(s): 4.2%us, 0.6%sy, 0.0%ni, 94.0%id, 1.0%wa, 0.0%hi, 0.3%si, 0.0%st
此外,您可以使用awk 获取特定列并从那里开始工作。
$ top -b -n 1 | grep "Cpu(s)\:" | awk '{print $2}'
4.2%us,
【讨论】:
top 的有趣之处在于它总是出现在列表的顶部 ;-)
【讨论】:
顶上@http://www.atoptool.nl/ 将写入日志文件等。详情在这里:http://www.atoptool.nl/systemreports.php
【讨论】: