【问题标题】:How to get CPU utilization in % in terminal (mac)如何在终端(mac)中以百分比形式获取 CPU 利用率
【发布时间】:2015-06-15 21:42:03
【问题描述】:

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

【问题讨论】:

  • 这适用于 Mac ps -e -o %cpu | awk '{s+=$1} END {print s}'
  • 谢谢,这就是我想要的,现在只需添加 %!谢谢
  • @vcsjones,将此作为答案发布,以便 OP 接受它
  • 为什么不启动活动监视器?

标签: macos terminal cpu


【解决方案1】:

这适用于 Mac(包括 %):

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

稍微分解一下:

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

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

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

0.0 1.3 27.0 0.0

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

【讨论】:

  • 这种方法不是很准确,因为这些值是四舍五入的。实际的 CPU 使用率可能更大或更小,可以通过 Activity Monitor 进行检查。
  • 我正在使用此命令获取 Mac 上的 % CPU 使用率,但我得到的某些百分比值大于 100。知道为什么会这样吗?
  • 这非常有用,因为它可以在恢复模式终端中工作。谢谢。 @Questionnaire 您可能会看到 >100%,因为您有超过 1 个核心。或者因为舍入问题。
【解决方案2】:

将所有这些 CPU 百分比相加可以得出 > 100% 的数字(可能是多个内核)。

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

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

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

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

(来自How to get CPU utilisation, RAM utilisation in MAC from commandline

【讨论】:

    【解决方案3】:

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

    top -l  2 | grep -E "^CPU" | tail -1 | awk '{ print $3 + $5"%" }'
    

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

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

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

    【讨论】:

      【解决方案4】:

      基于@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/\%/\/
      

      【讨论】:

        【解决方案5】:

        你可以这样做。

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

        【讨论】:

          【解决方案6】:
          top -F -R -o cpu
          

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

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

          -o cpu 按CPU使用率排序

          Answer Source

          【讨论】:

            猜你喜欢
            • 2015-07-28
            • 1970-01-01
            • 1970-01-01
            • 2020-11-27
            • 2012-10-19
            • 2022-01-26
            • 2021-05-21
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多