Differences between version 6 and previous revision of KnowledgeBase/Scripts/diskstats.sh.
Other diffs: Previous Major Revision, Previous Author
Newer page: | version 6 | Last edited on Tuesday, 20 October 2009 8:22:14 | by CyberLeo | Revert |
Older page: | version 5 | Last edited on Saturday, 13 June 2009 13:14:37 | by CyberLeo | Revert |
@@ -1,5 +1,5 @@
-<verbatim
>
+<code brush="bash"
>
#!/bin/bash
pretty(){
# Digest a single number into a pretty number
@@ -55,5 +55,5 @@
printf "\033[0J" # Clear the rest of the page
sleep 1
done
-</verbatim
>
+</code
>
version 6
#!/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