如何在终端(mac)中以%为单位获得CPU利用率

Waf*_*epi 8 macos terminal cpu

我在linux和windows上看过同样的问题,但不是mac(终端).任何人都可以告诉我如何以%为单位获得当前处理器利用率,因此示例输出将是40%.谢谢

vcs*_*nes 27

这适用于Mac(包括%):

ps -A -o %cpu | awk '{s+=$1} END {print s "%"}'
Run Code Online (Sandbox Code Playgroud)

为了打破这一点:

ps是流程状态工具.大多数*nix之类的操作系统都支持它.我们想要传递给它的一些标志:

  • -A 意味着所有流程,而不仅仅是那些正在运行的流程.
  • -o让我们指定我们想要的输出.在这种情况下,我们想要ps输出的cpu%列.

这将为我们提供所有进程cpu使用情况的列表,例如

0.0
1.3
27.0
0.0

我们现在需要将此列表相加以获得最终数字,因此我们将ps的输出输出到awk.awk是一个非常强大的解析和操作文本的工具.我们只需将数字相加,然后打印出结果,最后添加"%".

  • 由于这些值是四舍五入的,所以该方法不是很准确。实际的CPU使用率可能更大或更小,可以使用活动监视器进行检查。 (2认同)
  • 我使用此命令来获取 Mac 上的 CPU 使用率百分比,但我得到的某些百分比值大于 100。知道为什么会这样吗? (2认同)

Mic*_*ens 8

基于 @Jon R. 和 @Rounak D 之前的答案,以下行打印用户值和系统值的总和以及添加的百分比。我已经测试了这个值,我喜欢它与macOS 活动监视器中显示的百分比大致吻合。

top -l  2 | grep -E "^CPU" | tail -1 | awk '{ print $3 + $5"%" }'
Run Code Online (Sandbox Code Playgroud)

然后,您可以在脚本的变量中捕获该值,如下所示:

cpu_percent=$(top -l  2 | grep -E "^CPU" | tail -1 | awk '{ print $3 + $5"%" }')
Run Code Online (Sandbox Code Playgroud)

PS:您可能还对正常运行时间的输出感兴趣,它显示系统负载。


Jon*_*n R 6

将所有这些 CPU % 相加可以得到一个 > 100% 的数字(可能是多核)。

这是一个更简单的方法,虽然它有一些问题:

top -l 2 | grep -E "^CPU"
Run Code Online (Sandbox Code Playgroud)

这给出了 2 个样本,其中第一个是无意义的(因为它计算样本之间的 CPU 负载)。

此外,您需要使用 RegEx 之类的(\d+\.\d*)%或一些字符串函数来提取值,并添加“user”和“sys”值以获得总数。

(来自如何从命令行获取 CPU 利用率、MAC 中的 RAM 利用率