2019-09-26 11:23:40 +02:00

52 lines
2.1 KiB
Awk
Executable File

#!/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")
}
}