【问题标题】:Linux's top CPU usage - always the same valueLinux 最高 CPU 使用率 - 总是相同的值
【发布时间】:2013-07-02 02:46:40
【问题描述】:

这是我的命令:

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

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

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

当我跑步时:

top

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

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

【问题讨论】:

标签: linux cpu ps


【解决方案1】:

这是因为 top、vmstat、iostat 都在它们的第一次运行中收集自系统上次重新启动以来的数据。

连续迭代在您指定的采样周期内运行。因此,在第一次运行 top 时,您会看到 %idle 时间,因为从重新启动到运行 top 的时间,有那么多 % 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,

【讨论】:

    【解决方案2】:

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

    top command first iteration always returns the same result

    感谢您的帮助!

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

      • 对我来说top: procps version 3.2.8 这将返回“第一次迭代的结果”。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-27
      • 2010-09-08
      • 1970-01-01
      • 2015-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多