mina86 / tinyapps

A collection of tiny applications, mirror of repository at SourceForge.net

This URL has Read+Write access

tinyapps / cpuload.sh
100755 47 lines (38 sloc) 0.918 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/bin/sh
##
## Displays the CPU load.
## By Michal Nazareicz (mina86/AT/mina86.com)
## Released to Public Domain
##
## This is part of Tiny Applications Collection
## -> http://tinyapps.sourceforge.net/
##
 
if [ "X$1" == X-h ] || [ "X$1" == "X--help" ]; then
cat <<EOF
usage: ${0##*/} [ -n | --nice ]
-n --nice includes nice value
EOF
fi
 
 
if [ "X$1" == X-n ] || [ "X$1" == "X--nice" ]; then NICE=y; else NICE=; fi
 
 
while true; do
head -n 1 /proc/stat
sleep 1 || exit
done | while true; do
read IGNORE A B C D IGNORE2
if [ -z "$NICE" ]; then
LOAD=$(( $A + $B + $C ))
TOTAL=$(( $LOAD + $D ))
else
LOAD=$(( $A + $C ))
TOTAL=$(( $LOAD + $B + $D ))
fi
 
if [ -z "$OTOTAL" ] || [ "X$TOTAL" == "X$OTOTAL" ]; then
CPULOAD=0
else
CPULOAD=$((10000 * ($LOAD-$OLOAD) / ($TOTAL-$OTOTAL)))
fi
 
printf " %3d.%02d%%\r" $(($CPULOAD / 100)) $(($CPULOAD % 100))
 
OTOTAL=$TOTAL
OLOAD=$LOAD
sleep 1
done