如何在终端中获得 CPU 利用率(mac)

How to get CPU utilization in % in terminal (mac)

我在 linux 和 windows 上看到过相同的问题,但在 mac(终端)上没有看到。谁能告诉我如何以 % 的形式获取当前处理器利用率,因此示例输出为 40%。谢谢

这适用于 Mac(包括 %):

ps -A -o %cpu | awk '{s+=} END {print s "%"}'

稍微分解一下:

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

  • -A 表示所有进程,而不仅仅是像您这样的 运行。
  • -o 让我们指定我们想要的输出。在这种情况下,我们想要 ps 输出的 cpu% 列。

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

0.0
1.3
27.0
0.0

我们现在需要将此列表相加以获得最终数字,因此我们将 ps 的输出通过管道传输到 awk。 awk 是一个非常强大的文本分析和操作工具。我们只是简单地将数字相加,然后打印出结果,并在末尾添加一个“%”。

你可以做到这一点。

printf "$(ps axo %cpu | awk '{ sum+= } END { printf "%.1f\n", sum }' | tail -n 1),"

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

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

top -l 2 | grep -E "^CPU"

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

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

(来自

根据@Jon R 的回答,我们可以通过一些简单的模式匹配

获取用户CPU 利用率
top -l 1 | grep -E "^CPU" | grep -Eo '[^[:space:]]+%' | head -1

如果您还想去掉最后一个 % 符号,

top -l 1 | grep -E "^CPU" | grep -Eo '[^[:space:]]+%' | head -1 | sed s/\%/\/

基于@Jon R. 和@Rounak D 之前的回答,下一行打印了用户值和系统值的总和,并添加了百分比。我已经测试了这个值,我喜欢它与 macOS Activity Monitor.

中显示的百分比大致吻合
top -l  2 | grep -E "^CPU" | tail -1 | awk '{ print  + "%" }'

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

cpu_percent=$(top -l  2 | grep -E "^CPU" | tail -1 | awk '{ print  + "%" }')

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

top -F -R -o cpu

-F 不计算共享库,也称为框架的统计信息。

-R 每个进程不遍历上报内存对象映射

-o cpu 按 CPU 用法排序

Answer Source