这是我的命令:
top -b -n 1 | head -3 | tail -n 1 | awk '{ print $2 }'
我运行一个bash脚本来获取这些详细信息(也包括平均负载和内存消耗)并将其保存到一个文件中,我用它来显示cpu负载。
但是上面的命令,总是显示相同的值! ~6%,无论服务器是否处于高负载或空闲状态。
我跑的时候:
top
它在开头显示相同的值(~6%),刷新后显示实际值(例如80%)。
如何解决这个问题,或者如何获取可用于可视化的当前cpu使用情况?
答案 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}'
注意:我删除了head
和tail
,因为您可以单独使用awk
。
答案 2 :(得分:0)