-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathusage-cpu
More file actions
executable file
·36 lines (29 loc) · 958 Bytes
/
usage-cpu
File metadata and controls
executable file
·36 lines (29 loc) · 958 Bytes
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
#!/bin/sh
CPUS=$(getconf _NPROCESSORS_ONLN)
ITER=$(seq 1 $(expr $CPUS + 1))
for j in $ITER; do
FROM=($(sed "${j}q;d" /proc/stat))
NAME[j]=$(echo ${FROM[0]} | tr a-z A-Z)
FROM_TIME_IDLE[j]=${FROM[4]}
FROM_TIME_TOTAL[j]=$((${FROM[1]} + ${FROM[2]} + ${FROM[3]} + ${FROM[4]}))
done
sleep 0.25
for j in $ITER; do
TO=($(sed "${j}q;d" /proc/stat))
TO_TIME_IDLE=${TO[4]}
TO_TIME_TOTAL[j]=$((${TO[1]} + ${TO[2]} + ${TO[3]} + ${TO[4]}))
# TODO: Fix divide-by-zero
DELTA_TIME=$((FROM_TIME_TOTAL[j] - TO_TIME_TOTAL[j]))
if [[ $DELTA_TIME > 0 ]]
then
PERCENT[j]=$((100 * (FROM_TIME_TOTAL[j] - TO_TIME_TOTAL[j] - ${FROM_TIME_IDLE[j]} + $TO_TIME_IDLE) / $DELTA_TIME))
else
PERCENT[j]=0
fi
done
NAME[1]=" AVG"
for j in $ITER; do
PERCENT_PADDED=$(echo ${PERCENT[$j]} | sed -e :a -e 's/^.\{1,2\}$/ &/;ta')
echo -e "${PERCENT[$j]}\t ${NAME[$j]}: "$PERCENT_PADDED"% "
done
echo -ne "\0"