52 lines
2.1 KiB
Plaintext
52 lines
2.1 KiB
Plaintext
|
#!/usr/bin/gawk -f
|
||
|
#-------------------------------------------------------------------------------
|
||
|
# ~/bin/cpustat : display cpu utilization
|
||
|
#
|
||
|
# usage : normally used as a GNU/screen backtick
|
||
|
#
|
||
|
# notes : 1. Works on the assumption that /proc/stat's first line
|
||
|
# : has the total "jiffies" since boot up used by the
|
||
|
# : different types of tasks in the system. See the
|
||
|
# : filesystems/proc.txt document in kernel source tree
|
||
|
# :
|
||
|
# : 2. Displays a total CPU% (user+system+nice) as well as
|
||
|
# : user CPU% system CPU% and nice CPU%
|
||
|
#-------------------------------------------------------------------------------
|
||
|
BEGIN {
|
||
|
file = "/proc/stat"
|
||
|
while (getline < file) { # read first line
|
||
|
# extract jiffies:
|
||
|
user=$2-user_saved; # . user
|
||
|
nice=$3-nice_saved; # . nice user
|
||
|
syst=$4-syst_saved; # . system
|
||
|
idle=$5-idle_saved; # . idle
|
||
|
wait=$6-wait_saved; # . iowait
|
||
|
irqs=$7-irqs_saved; # . irq
|
||
|
sirq=$8-sirq_saved; # . softirq
|
||
|
|
||
|
cact=user+syst+nice; # what counts
|
||
|
ctot=user+nice+syst+idle+wait+irqs+sirq; # total activity
|
||
|
|
||
|
tcpu=cact/ctot*100; # total % cpu utilization
|
||
|
ucpu=user/ctot*100; # user % cpu utilization
|
||
|
scpu=syst/ctot*100; # system % cpu utilization
|
||
|
ncpu=nice/ctot*100; # nice % cpu utilization
|
||
|
|
||
|
printf "%.1f %%\n",tcpu
|
||
|
|
||
|
|
||
|
user_saved=$2; # save the current jiffies
|
||
|
nice_saved=$3; # values for the next loop
|
||
|
syst_saved=$4;
|
||
|
idle_saved=$5;
|
||
|
wait_saved=$6;
|
||
|
irqs_saved=$7;
|
||
|
sirq_saved=$8;
|
||
|
|
||
|
close(file) # re-read file
|
||
|
|
||
|
system("sleep 3")
|
||
|
}
|
||
|
}
|
||
|
|