如何在终端中获得 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 用法排序
我在 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 用法排序