![top -bn1 未给出正确的 CPU 使用情况](https://linux22.com/image/5021/top%20-bn1%20%E6%9C%AA%E7%BB%99%E5%87%BA%E6%AD%A3%E7%A1%AE%E7%9A%84%20CPU%20%E4%BD%BF%E7%94%A8%E6%83%85%E5%86%B5.png)
我正在登录一个节点,我知道该节点的 cpu 使用率接近 100%(20 个单进程作业,每个作业使用几乎 100% cpu)。当我top
交互使用时,第一次迭代,它给了我大约 20% 的使用率ni
,下一次迭代以及正确使用后的所有迭代都提供了 95% 以上的ni
使用率。我想要通过管道传输top
via的输出top -bn1 > outfile
,但第一次迭代top -bn1
(唯一的迭代)给出了不正确的 CPU 使用率。如果我使用top -bn2
,那么第二次迭代会给出正确的用法,但输出太多。
我怎样才能top -bn1
正确地给出CPU使用率?我正在编写此脚本用于使用情况统计,因此如果有必要,我可以返回并独立对进程进行分析以生成我自己的 CPU 使用情况,但如果top
能够立即为我提供正确的使用情况,那就太好了。
编辑:mpdstat -P ALL
给我相同的、不正确的初始使用统计数据。如果能弄清楚这一点也很好。我可以使用mpstat -P ALL 1 1
,但这会产生两次输出。
答案1
只需删除第一次迭代的输出即可。
top -bn2 | awk '/^top -/ { p=!p } { if (!p) print }'
答案2
有些工具首先显示计算出的平均值。其他工具的第一个样本不完整。总的来说,建议跳过第一个样本以获得所需的结果。