有哪些方法可以在Linux命令行中获得CPU使用率?[关闭]


12

我们知道这top是获取Linux中CPU使用率的命令,其他方法包括 cat /proc/stattop使用的方法。

还有哪些其他方法可以在Linux命令行中获得CPU使用率?

用例场景: 脚本将使用此命令的输出来连续记录CPU使用率。top/proc/stat给出难以记录的详细用法。有没有更简单的方法来获取CPU信息?


3
您引用的内容有什么问题?
pataluc

@pataluc它提供了更详细的信息。我需要一个总体CPU使用率,例如说CPU使用率:91%使用内存:78%空闲内存:22%诸如此类
。.– fasil

请参阅Nathan的答案... sed如果只需要该值,则可以得到结果。
pataluc 2013年

投票关闭为“非建设性”。来自superuser.com/help/dont-ask:“ 为防止您的问题被标记和删除,请避免在以下位置提出主观问题……您的答案与问题一起提供,并且您希望获得更多答案:'我将______用作______ , 你用什么?'
bwDraco

3
@DragonLord实际上,执行此操作的方式非常有限,这里的两个答案实际上很有用。我的人指出了一个非常普遍的误解top,另一个人给出了一个非常有用的命令。不是我用的X,请问您呢?问题,但是我该如何做X问题。投票重新开放。
terdon 2013年

Answers:


14

正如其他人所说,最好的方法可能是top。它需要一些调整和解析,但是您可以得到它以百分比的形式显示当前的CPU使用率。

top在用户,系统进程和nice进程之间划分CPU使用率,我们需要三者之和。因此,我们可以topbatch模式下运行,该模式允许我们解析其输出。然而,正如解释在这里,第1次迭代的top -b开机以来回报百分比,因此,我们至少需要两次迭代(-n 2)来获得当前的百分比。为了加快速度,您可以将d两次迭代之间的elay 设置为0.01。最后,您grep包含CPU百分比的行,然后用于gawk对用户,系统和漂亮的进程求和:

    top -bn 2 -d 0.01 | grep '^%Cpu' | tail -n 1 | gawk '{print $2+$4+$6}'
        -----  ------   -----------    ---------   ----------------------
          |      |           |             |             |------> add the values
          |      |           |             |--> keep only the 2nd iteration
          |      |           |----------------> keep only the CPU use lines
          |      |----------------------------> set the delay between runs
          |-----------------------------------> run twice in batch mode

我认为您还可以通过ps -o pcpu ax添加每个正在运行的进程的使用百分比来获取此信息。不幸的是,正如这里所解释的,ps“返回的是在整个过程的生命周期中运行所花费的时间的百分比”,这不是您所需要的。


编辑

根据您的评论,您使用的版本top与我的不同,您应该改用以下版本:

top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'

并且,为避免本地化问题,请将语言环境设置为C:

LC_ALL=C top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'

我删除了我的答案,因为您说的是正确的。这似乎是一个有效的方法。
内森·C

@NathanC我也认为您的回答也是正确的,这就是我会回答的。然后我对其进行了测试,并感到很惊讶:)。
terdon

@terdon感谢您的详细回答...我无法获取上述命令的输出。是否需要任何语法上的修改
。.– fasil

@fasil不,它应该工作。问题是什么?有任何错误讯息吗?
terdon

@terdon我没有得到完整命令的任何输出..使用#top -bn 2 -d 0.01我得到了完整的结果,但是在添加grep'^%Cpu'时我没有看到任何输出,只是提示符返回了no错误...
fasil

9

sar是确定的方法。因此,例如 sar -u将输出如下内容:

08:30:01 AM       CPU     %user     %nice   %system   %iowait     %idle
08:40:01 AM       all      6.94      0.00      1.77      4.92     86.36
08:50:01 AM       all      5.73      0.00      2.31     12.72     79.24
09:00:01 AM       all      5.95      0.00      2.58     18.36     73.11
09:10:01 AM       all      6.88      0.00      2.22     17.44     73.45
09:20:01 AM       all      8.61      0.00      2.68     27.93     60.78

您没有说要使用哪个Linux,而是需要为CentOS / RedHat安装sysstat软件包,我认为Debian / Ubuntu上也是如此。

您还可以使用sar 临时收集统计信息:

sar -o /tmp/sar.out 60 600

每60秒收集一次统计数据600次,即600分钟。


1
您可能应该用不同的措词。您发布的行将每60秒测量600次。我阅读您的帖子的方式是600是持续时间,因此,如果我输入30 600,它将每30秒花费600分钟,但是实际上每30秒将花费600次。
James McDonnell '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.