How to get overall CPU usage (e.g. 57%) on Linux [closed] How to get overall CPU usage (e.g. 57%) on Linux [closed] linux linux

How to get overall CPU usage (e.g. 57%) on Linux [closed]


Take a look at cat /proc/stat

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

EDIT please read comments before copy-paste this or using this for any serious work. This was not tested nor used, it's an idea for people who do not want to install a utility or for something that works in any distribution. Some people think you can "apt-get install" anything.

NOTE: this is not the current CPU usage, but the overall CPU usage in all the cores since the system bootup. This could be very different from the current CPU usage. To get the current value top (or similar tool) must be used.

Current CPU usage can be potentially calculated with:

awk '{u=$2+$4; t=$2+$4+$5; if (NR==1){u1=u; t1=t;} else print ($2+$4-u1) * 100 / (t-t1) "%"; }' \<(grep 'cpu ' /proc/stat) <(sleep 1;grep 'cpu ' /proc/stat)


You can try:

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


Try mpstat from the sysstat package

> sudo apt-get install sysstatLinux 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   %idle03:33:26 PM  all    2.39    0.04    0.19    0.34    0.00    0.01    0.00    0.00   97.03

Then some cutor grepto parse the info you need:

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