Linux';s最高CPU使用率-始终为相同值

Linux';s最高CPU使用率-始终为相同值,linux,cpu,ps,Linux,Cpu,Ps,这是我的命令: top -b -n 1 | head -3 | tail -n 1 | awk '{ print $2 }' 我运行一个bash脚本,该脚本获取这些详细信息(还包括平均负载和内存消耗),并将其保存到一个文件中,我使用该文件来可视化cpu负载 但是上面的命令,总是显示相同的值! ~6%,无论服务器处于重载还是空闲状态 当我跑步时: top 它在开始时显示相同的值(~6%),刷新后显示实际值(例如80%) 如何修复该问题,或者如何获取可用于可视化的当前cpu使用率?这是因为top

这是我的命令:

top -b -n 1 | head -3 | tail -n 1 | awk '{ print $2 }'
我运行一个bash脚本,该脚本获取这些详细信息(还包括平均负载和内存消耗),并将其保存到一个文件中,我使用该文件来可视化cpu负载

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

当我跑步时:

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


如何修复该问题,或者如何获取可用于可视化的当前cpu使用率?

这是因为top、vmstat和iostat在第一次运行时都会收集系统上次重新启动后的数据

并且连续迭代在指定的采样周期上运行。因此,在top的第一次运行中,您将看到
%idle
时间,因为从重新启动到运行top的时间,它的空闲率是如此之高。但在下一次迭代中,由于它很忙,所以不会显示任何
%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,

一种可能的解决方法是在捕获结果之前增加迭代次数。因此,请尝试以下方法:

top -b -n 3 | awk 'NR==3{print $2;exit}'
注意:我删除了
头部
尾部
,因为你可以单独使用
awk
完成所有操作。

我不知道这叫做“迭代”,使用这个关键字我找到了解决问题的方法:


谢谢你的帮助

是的,我知道可能是重复的,这是相同的问题,但仍然无法为我找到正确的答案,使用
top:procps版本3.2.8
返回“第一次迭代的结果”。