Macos 如何在终端(mac)中获得CPU利用率百分比

Macos 如何在终端(mac)中获得CPU利用率百分比,macos,terminal,cpu,Macos,Terminal,Cpu,我在linux和windows上看到过同样的问题,但在mac(终端)上没有看到。有谁能告诉我如何获得当前处理器的利用率(单位为%),因此示例输出为40%。谢谢这适用于Mac电脑(包括%): 要稍微分解一下这一点: ps是流程状态工具。大多数类似于*nix的操作系统都支持它。我们想向它传递几个标志: -A表示所有进程,而不仅仅是您正在运行的进程 -o允许我们指定所需的输出。在这种情况下,我们只需要将它添加到ps输出的cpu%列中 这将为我们提供所有进程cpu使用情况的列表,如 0.0 1.3

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

这适用于Mac电脑(包括%):

要稍微分解一下这一点:

ps
是流程状态工具。大多数类似于*nix的操作系统都支持它。我们想向它传递几个标志:

  • -A
    表示所有进程,而不仅仅是您正在运行的进程
  • -o
    允许我们指定所需的输出。在这种情况下,我们只需要将它添加到
    ps
    输出的cpu%列中
这将为我们提供所有进程cpu使用情况的列表,如

0.0 1.3 27.0 0.0 0 1.3 27 0 我们现在需要把这个列表加起来得到一个最终的数字,所以我们将ps的输出传输到
awk
。awk是一个非常强大的文本解析和操作工具。我们只需将数字相加,然后打印出结果,并在末尾加上“%”。

您可以这样做

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

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

这里有一个更简单的方法,尽管它会带来一些问题:

top -l 2 | grep -E "^CPU"
这将给出2个样本,其中第一个是无意义的(因为它计算样本之间的CPU负载)

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


(From)

基于@Jon R的答案,我们可以通过一些简单的模式匹配来获取用户CPU利用率

top-l1 | grep-E“^CPU”| grep-Eo'[^[:space:]+%'| head-1
如果您还想去掉最后一个
%
符号

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

基于@Jon R.和@Rounak D之前的回答,下面一行打印用户和系统值的总和,以及添加的百分比。我已经测试过这个值,我喜欢它大致上与表中所示的百分比吻合

top-l2 | grep-E“^CPU”| tail-1 | awk'{print$3+$5”}
然后,您可以在脚本中的变量中捕获该值,如下所示:

cpu_%=$(top-l2 | grep-E“^cpu”| tail-1 | awk'{print$3+$5”%”)
PS:您可能还对显示系统负载的正常运行时间的输出感兴趣

top -F -R -o cpu
-F不要计算共享库(也称为框架)的统计数据

-R不要遍历并报告每个进程的内存对象映射

-o按cpu使用情况划分的cpu顺序


这在Mac电脑上运行
ps-e-o%cpu | awk'{s+=$1}END{print s}'
谢谢这是我想要的,现在只需添加%s!thanks@vcsjones,将此作为答案发布,以便OP可以接受它为什么不启动活动监视器?由于这些值是四舍五入的,所以该方法不太准确。实际的CPU使用率可能大得多,也可能小得多,这可以通过活动监视器进行检查。我使用此命令获取Mac上的CPU使用率百分比,但我得到的某些百分比值大于100。知道为什么会这样吗?这非常有用,因为它在恢复模式下工作。谢谢@您可能会看到>100%的调查问卷,因为您有多个核心。或者是因为取整问题。
top -F -R -o cpu