首页 > 解决方案 > 从linux中的top命令计算CPU使用率

问题描述

我必须在我的应用程序上显示 CPU 使用率并实时更新它。我正在使用 top 命令来获取 CPU 使用率,即最高命令

我添加两个突出显示的值以获取 CPU 使用率。我用来添加突出显示的值并获取最终 CPU 使用率的命令是:

top -b -n 2 | grep Cpu | awk '{printf "CPU Load:%.2f\n", $(NF-13) + $(NF-15)}' | sed -n '2 p'

问题是,这个命令在某个时间后停止工作,即 3-4 分钟我确实得到了 CPU 使用率,但是在那个命令没有处理之后我没有得到更新的值。我正在循环运行此命令。

任何帮助将非常感激。

标签: linuxcommandcpucpu-usage

解决方案


我使用类似的脚本已经有一段时间没有问题了:

top -bn2 | grep Cpu | tail -n1 | sed -e 's/.*, *\([0-9.]*\)%* id.*/\1/' | awk '{print 100-$1}'

该脚本从顶部输出中获取“空闲”时间并将其从 100% 中扣除以获取 cpu 使用率。

您调用脚本的循环周期不应快于脚本完成所需的时间。否则,您可能会得到多个 'top' 并行运行。这主要取决于您系统上的“顶部”默认延迟,在我的系统上,它大约是 5 秒,但您可以使用 -d 开关进行设置。


推荐阅读