如何在Linux上获得整体CPU使用率(例如57%)

我想知道如何获得一个系统的CPU使用率,并在%(在bash中)例如

示例输出:

57% 

如果核心数超过1的话,如果可以算出平均百分比就好了

看看cat /proc/stat

grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} END {print usage "%"}'

编辑请阅读评论之前复制粘贴这个或使用这个任何认真的工作。 这并没有经过testing也没有被使用过,对于那些不想安装实用程序的人来说,这是一个想法。 有人认为你可以“安装”任何东西。

你可以试试:

 top -bn1 | grep "Cpu(s)" | \ sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | \ awk '{print 100 - $1"%"}' 

sysstat包中尝试mpstat

 > sudo apt-get install sysstat Linux 3.0.0-13-generic (ws025) 02/10/2012 _x86_64_ (2 CPU) 03:33:26 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 03:33:26 PM all 2.39 0.04 0.19 0.34 0.00 0.01 0.00 0.00 97.03 

然后一些cutgrep来parsing你所需要的信息:

 mpstat | grep -A 5 "%idle" | tail -n 1 | awk -F " " '{print 100 - $ 12}'a 

也许不妨用我的解决scheme做出实际的回应,这个解决scheme受到Peter Liljenberg的启发:

 $ mpstat | awk '$12 ~ /[0-9.]+/ { print 100 - $12"%" }' 0.75% 

这将使用awk打印出100减去第12个字段(空闲),并用百分号表示。 awk只会对第12个字段只有数字和点( $12 ~ /[0-9]+/ )的行做此操作。

编辑:我注意到,在另一个用户的答复%空闲是领域12而不是字段11. awk已经更新,以占%空闲字段variables。

这应该得到你想要的输出:

 mpstat | awk '$3 ~ /CPU/ { for(i=1;i<=NF;i++) { if ($i ~ /%idle/) field=i } } $3 ~ /all/ { print 100 - $field }' 

如果你想要一个简单的整数舍入,你可以使用printf:

 mpstat | awk '$3 ~ /CPU/ { for(i=1;i<=NF;i++) { if ($i ~ /%idle/) field=i } } $3 ~ /all/ { printf("%d%%",100 - $field) }'