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

时间:2015-06-15 21:42:04

标签: macos terminal cpu

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

6 个答案:

答案 0 :(得分:24)

这适用于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是一个非常强大的解析和操作文本的工具。我们只需将数字相加,然后打印出结果,然后添加一个"%"最后。

答案 1 :(得分:3)

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

这是一个更简单的方法,尽管它存在一些问题:

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

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

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

top -F -R -o cpu

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

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

-o cpu 按 CPU 使用率排序

Answer Source

答案 4 :(得分:0)

您可以这样做。

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

答案 5 :(得分:0)

在@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:您可能还对正常运行时间的输出感兴趣,该时间显示了系统负载。