Differences between version 5 and previous revision of KnowledgeBase/Scripts/diskstats.sh.
Other diffs: Previous Major Revision, Previous Author
| Newer page: | version 5 | Last edited on Saturday, 13 June 2009 13:14:37 | by CyberLeo | Revert |
| Older page: | version 4 | Last edited on Saturday, 13 June 2009 12:38:30 | by CyberLeo | Revert |
@@ -2,9 +2,9 @@
#!/bin/bash
pretty(){
# Digest a single number into a pretty number
- num=$1
+ num=${
1:-0}
zero=0
tera=$(( $num / 1099511627776 ))
num=$(( $num % 1099511627776 ))
@@ -15,22 +15,18 @@
kilo=$(( $num / 1024 ))
num=$(( $num % 1024 ))
byte=${num:-0}
- one=${
byte}
&& two=${
zero}
&& sign=B
- [ $kilo -gt 0 ] && one=${
kilo}
&& two=${
byte}
&& sign=kB
- [ $mega -gt 0 ] && one=${
mega}
&& two=${
kilo}
&& sign=MB
- [ $giga -gt 0 ] && one=${
giga}
&& two=${
mega}
&& sign=GB
- [ $tera -gt 0 ] && one=${
tera}
&& two=${
giga}
&& sign=TB
+ one=byte && two=zero && sign=B
+ [ $kilo -gt 0 ] && one=kilo && two=byte && sign=kB
+ [ $mega -gt 0 ] && one=mega && two=kilo && sign=MB
+ [ $giga -gt 0 ] && one=giga && two=mega && sign=GB
+ [ $tera -gt 0 ] && one=tera && two=giga && sign=TB
fmt="%0.2f%s\n"
[ "${sign}" = "B" ] && fmt="%0d%s\n"
- if
[ "${
two}
" = "${
zero}
" ]
- then
-
num="${one}"
- else
- num="
$(eval echo \$$one.\$$two
)"
- fi
+ num=$(eval echo \$$one.\$$two)
+
[ "$two" = "zero" ] &&
num=$(eval echo \$$one)
printf "${fmt}" ${num} $sign
}
digest(){
version 5
#!/bin/bash
pretty(){
# Digest a single number into a pretty number
num=${1:-0}
zero=0
tera=$(( $num / 1099511627776 ))
num=$(( $num % 1099511627776 ))
giga=$(( $num / 1073741824 ))
num=$(( $num % 1073741824 ))
mega=$(( $num / 1048576 ))
num=$(( $num % 1048576 ))
kilo=$(( $num / 1024 ))
num=$(( $num % 1024 ))
byte=${num:-0}
one=byte && two=zero && sign=B
[ $kilo -gt 0 ] && one=kilo && two=byte && sign=kB
[ $mega -gt 0 ] && one=mega && two=kilo && sign=MB
[ $giga -gt 0 ] && one=giga && two=mega && sign=GB
[ $tera -gt 0 ] && one=tera && two=giga && sign=TB
fmt="%0.2f%s\n"
[ "${sign}" = "B" ] && fmt="%0d%s\n"
num=$(eval echo \$$one.\$$two)
[ "$two" = "zero" ] && num=$(eval echo \$$one)
printf "${fmt}" ${num} $sign
}
digest(){
dev="${1}"
if [ ! -d "/sys/block/${dev}" ]
then
return 1
fi
eval $(printf 'old_r=$old_r_%s old_w=$old_w_%s' "${dev}" "${dev}")
[ -z "${old_r}" ] && old_r=0
[ -z "${old_w}" ] && old_w=0
eval $(awk '{print "cur_r=" $3 " cur_w=" $7}' /sys/block/${dev}/stat)
dif_r=$(( (${cur_r} - ${old_r}) * 512 ))
dif_w=$(( (${cur_w} - ${old_w}) * 512 ))
eval $(printf "old_r_%s=%u old_w_%s=%u" "${dev}" "${cur_r}" "${dev}" "${cur_w}")
printf "%s: R: %s W: %s \033[K\n" "${dev}" "$(pretty ${dif_r})" "$(pretty ${dif_w})"
}
while true
do
printf "\033[0;0H" # Cursor to upper left
for I in /sys/block/sd?
do
digest "$(basename "${I}")"
done
printf "\033[0J" # Clear the rest of the page
sleep 1
done
