Linux顶级CPU使用率 - 总是相同的值

时间:2013-07-04 07:39:17

标签: linux cpu ps

这是我的命令:

top -b -n 1 | head -3 | tail -n 1 | awk '{ print $2 }'

我运行一个bash脚本来获取这些详细信息(也包括平均负载和内存消耗)并将其保存到一个文件中,我用它来显示cpu负载。

但是上面的命令,总是显示相同的值! ~6%,无论服务器是否处于高负载或空闲状态。

我跑的时候:

top

它在开头显示相同的值(~6%),刷新后显示实际值(例如80%)。

如何解决这个问题,或者如何获取可用于可视化的当前cpu使用情况?

3 个答案:

答案 0 :(得分:5)

这是因为top,vmstat,iostat在他们的第一次运行中都收集了自系统上次重启时间以来的数据。

连续迭代在您指定的采样周期上运行。因此,在第一次运行顶部时,您将看到%idle时间,因为从重新启动到运行顶部的时间,它是空闲的。但是在下一次迭代中,由于它很忙,它不显示任何%idle

你试试这个:

top -b -n 5 -d.2 | grep "Cpu" |  tail -n 1 | awk '{ print($2)}'

或略短

top -b -n 5 -d.2 | grep "Cpu" |  awk 'NR==3{ print($2)}'

它应该打印如下:

48.8%us,

答案 1 :(得分:1)

一种可能的解决方法是在捕获结果之前增加迭代次数。所以尝试类似的事情:

top -b -n 3 | awk 'NR==3{print $2;exit}'

注意:我删除了headtail,因为您可以单独使用awk

答案 2 :(得分:0)

我不知道它被称为“迭代”,使用此关键字我找到了解决该问题的方法:

top command first iteration always returns the same result

感谢您的帮助!