Yac*_*ali 5 linux centos5 admin batch-file top-command
运行top -b -n 1时,该命令始终返回相同的CPU值.连续5次考虑以下测试运行:
[user@server ~]$ top -b -n 5 -d.2 | grep "Cpu(s)"
Cpu(s): 18.5%us, 10.0%sy, 0.0%ni, 67.0%id, 4.2%wa, 0.0%hi, 0.2%si, 0.1%st
Cpu(s): 39.8%us, 27.7%sy, 0.0%ni, 31.3%id, 0.0%wa, 0.0%hi, 1.2%si, 0.0%st
Cpu(s): 39.0%us, 35.4%sy, 0.0%ni, 23.2%id, 0.0%wa, 0.0%hi, 1.2%si, 1.2%st
Cpu(s): 41.2%us, 34.1%sy, 0.0%ni, 15.3%id, 1.2%wa, 0.0%hi, 2.4%si, 5.9%st
Cpu(s): 59.0%us, 30.1%sy, 0.0%ni, 4.8%id, 0.0%wa, 0.0%hi, 3.6%si, 2.4%st
[user@server ~]$ top -b -n 5 -d.2 | grep "Cpu(s)"
Cpu(s): 18.5%us, 10.0%sy, 0.0%ni, 67.0%id, 4.2%wa, 0.0%hi, 0.2%si, 0.1%st
Cpu(s): 18.9%us, 17.8%sy, 0.0%ni, 63.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu(s): 18.8%us, 21.2%sy, 0.0%ni, 55.3%id, 2.4%wa, 0.0%hi, 1.2%si, 1.2%st
Cpu(s): 29.4%us, 24.7%sy, 0.0%ni, 45.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu(s): 60.5%us, 24.4%sy, 0.0%ni, 11.6%id, 1.2%wa, 0.0%hi, 1.2%si, 1.2%st
[user@server ~]$ top -b -n 5 -d.2 | grep "Cpu(s)"
Cpu(s): 18.5%us, 10.0%sy, 0.0%ni, 67.0%id, 4.2%wa, 0.0%hi, 0.2%si, 0.1%st
Cpu(s): 43.4%us, 38.6%sy, 0.0%ni, 15.7%id, 0.0%wa, 0.0%hi, 1.2%si, 1.2%st
Cpu(s): 55.3%us, 40.0%sy, 0.0%ni, 4.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu(s): 39.5%us, 48.8%sy, 0.0%ni, 5.8%id, 1.2%wa, 0.0%hi, 1.2%si, 3.5%st
Cpu(s): 40.7%us, 55.6%sy, 0.0%ni, 2.5%id, 0.0%wa, 0.0%hi, 0.0%si, 1.2%st
[user@server ~]$ top -b -n 5 -d.2 | grep "Cpu(s)"
Cpu(s): 18.5%us, 10.0%sy, 0.0%ni, 67.0%id, 4.2%wa, 0.0%hi, 0.2%si, 0.1%st
Cpu(s): 27.1%us, 10.6%sy, 0.0%ni, 61.2%id, 1.2%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu(s): 25.3%us, 5.7%sy, 0.0%ni, 67.8%id, 0.0%wa, 0.0%hi, 0.0%si, 1.1%st
Cpu(s): 15.5%us, 16.7%sy, 0.0%ni, 64.3%id, 0.0%wa, 0.0%hi, 0.0%si, 3.6%st
Cpu(s): 57.3%us, 11.2%sy, 0.0%ni, 30.3%id, 0.0%wa, 0.0%hi, 0.0%si, 1.1%st
[user@server ~]$ top -b -n 5 -d.2 | grep "Cpu(s)"
Cpu(s): 18.5%us, 10.0%sy, 0.0%ni, 67.0%id, 4.2%wa, 0.0%hi, 0.2%si, 0.1%st
Cpu(s): 44.0%us, 6.0%sy, 0.0%ni, 42.9%id, 0.0%wa, 0.0%hi, 3.6%si, 3.6%st
Cpu(s): 45.8%us, 9.6%sy, 0.0%ni, 44.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu(s): 34.5%us, 8.3%sy, 0.0%ni, 57.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu(s): 38.6%us, 14.5%sy, 0.0%ni, 45.8%id, 0.0%wa, 0.0%hi, 0.0%si, 1.2%st
Run Code Online (Sandbox Code Playgroud)
知道这里有什么问题吗?
如果有人正在寻找一行获取cpu的值,那么试试这个
top -b -n 5 -d.2 | grep "Cpu" | tail -n1 | awk '{print($2)}' | cut -d'%' -f 1
Top 在开始之前不知道进程时间计数是多少,因此它会在第一次通过时根据负载平均和等待线程等多种因素进行猜测。
如果您以交互方式启动 top 并快速检查它返回的第一批结果,您可以看到相同的效果。
简单的解决方案: top -b -n 5 -d.2 | grep "Cpu(s)" | tail -n+2