我在linux和windows上看过同样的问题,但不是mac(终端)。任何人都可以告诉我如何以%为单位获得当前处理器利用率,因此示例输出将为40%
。感谢
答案 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)
答案 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:您可能还对正常运行时间的输出感兴趣,该时间显示了系统负载。