Differences between version 2 and predecessor to the previous major change of KnowledgeBase/Scripts/diskstats.sh.
Other diffs: Previous Revision, Previous Author
| Newer page: | version 2 | Last edited on Sunday, 16 November 2008 2:44:10 | by CyberLeo | Revert |
| Older page: | version 1 | Last edited on Thursday, 4 October 2007 0:28:15 | by CyberLeo | Revert |
@@ -1,63 +1,94 @@
<verbatim>
#!/bin/bash
+sda_r=0
+sda_w=0
+sda_r_old=0
+sda_w_old=0
sdb_r=0
sdb_w=0
sdb_r_old=0
sdb_w_old=0
sdc_r=0
sdc_w=0
sdc_r_old=0
sdc_w_old=0
+sdd_r=0
+sdd_w=0
+sdd_r_old=0
+sdd_w_old=0
+md0_r=0
+md0_w=0
+md0_r_old=0
+md0_w_old=0
pretty(){
-
# Digest a single number into a pretty number
- num=$1
- zero=000
+
# Digest a single number into a pretty number
+
num=$1
+
zero=000
-
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}
+
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
+
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
-
printf "%0.2f %s\n" $(eval echo \$$one.\$$two) $sign
+
printf "%0.2f %s\n" $(eval echo \$$one.\$$two) $sign
}
while true
do
-
# Get new values
- eval $(printf
'sdb
_r=%u sdb
_w=%u
' $(cat
/sys/block/sdb/stat |tr -s ' ' | cut -d' ' -f4,8)
)
- eval $(printf
'sdc_r=%u
sdc_w=%u'
$(cat
/sys/block/sdc/stat |tr -s
' ' | cut -d
' ' -f4,8)
)
+
# Get new values
+
eval $(awk
'{print "sda
_r=" $3 " sda
_w=" $7}
' /sys/block/sda/stat)
+ eval
$(awk '{print "sdb_r=" $3 " sdb_w=" $7}'
/sys/block/sdb/stat)
+
eval $(awk
'{print "
sdc_r=" $3 "
sdc_w="
$7}'
/sys/block/sdc/stat)
+ eval $(awk
'{print "sdd_r=" $3 " sdd_w=" $7}
' /sys/block/sdd/stat)
+ eval $(awk
'{print "md0_r=" $3 " md0_w=" $7}
' /sys/block/md0/stat
)
- # Compute diffs
- sdb_r_diff=$(( ($sdb_r - $sdb_r_old) * 512))
- sdb_w_diff=$(( ($sdb_w - $sdb_w_old) * 512))
- sdc_r_diff=$(( ($sdc_r - $sdc_r_old) * 512))
- sdc_w_diff=$(( ($sdc_w - $sdc_w_old) * 512))
-
# Print the display
- printf "\
r sdb:
r %s w %s
- sdc:
r: %s w %s " \
- "
$(pretty
$sdb_r_diff)" "
$(pretty
$sdb_w_diff)" \
- "
$(pretty
$sdc_r_diff)" "
$(pretty
$sdc
_w_diff)"
+
# Compute diffs
+ sda_
r_diff=$(( ($sda_
r - $sda_
r_old) * 512))
+ sda_w_diff=
$(( (
$sda_w - $sda_w_old) * 512))
+
sdb_r_diff=$(( ($sdb_r - $sdb_r_old
) * 512))
+ sdb_w_diff=
$(( (
$sdb_w - $sdb_w_old) * 512))
+ sdc_r
_diff=$(( ($sdc_r - $sdc_r_old) * 512)
)
+ sdc_w_diff=
$(( (
$sdc_w - $sdc_w_old) * 512))
+ sdd
_r_diff=$(( ($sdd_r - $sdd_r_old
) * 512))
+ sdd_w_diff=
$(( (
$sdd
_w - $sdd_w_old) * 512))
+ md0_r
_diff=$(( ($md0_r - $md0_r_old) * 512))
+ md0_w_diff=$(( ($md0_w - $md0_w_old) * 512)
)
-
# Save values
- sdb
_r_old=
$sdb
_r
- sdb_w
_old=
$sdb_w
- sdc_r_old=
$sdc_r
- sdc
_w_old=
$sdc
_w
+
# Print the display
+ printf "\033[0;0H"
+ printf "sda: %12s %12s \033[K\n" "$(pretty $sda
_r_diff)" "
$(pretty $sda
_w_diff)"
+ printf "sdb: %12s %12s \033[K\n" "$(pretty $
sdb_r
_diff)" "$(pretty
$sdb_w_diff)"
+ printf "sdc: %12s %12s \033[K\n" "$(pretty $
sdc_r_diff)" "$(pretty
$sdc_w_diff)"
+ printf "sdd: %12s %12s \033[K\n" "$(pretty $sdd_r_diff)" "$(pretty $sdd
_w_diff)"
+ printf "md0: %12s %12s \033[K\n" "
$(pretty $md0_r_diff)" "$(pretty $md0
_w_diff)"
-
# Sleep until the next cycle
- sleep 1
+ # Save values
+ sda_r_old=$sda_r
+ sda_w_old=$sda_w
+ sdb_r_old=$sdb_r
+ sdb_w_old=$sdb_w
+ sdc_r_old=$sdc_r
+ sdc_w_old=$sdc_w
+ sdd_r_old=$sdd_r
+ sdd_w_old=$sdd_w
+ md0_r_old=$md0_r
+ md0_w_old=$md0_w
+
+
# Sleep until the next cycle
+
sleep 1
done
</verbatim>
version 2
#!/bin/bash
sda_r=0
sda_w=0
sda_r_old=0
sda_w_old=0
sdb_r=0
sdb_w=0
sdb_r_old=0
sdb_w_old=0
sdc_r=0
sdc_w=0
sdc_r_old=0
sdc_w_old=0
sdd_r=0
sdd_w=0
sdd_r_old=0
sdd_w_old=0
md0_r=0
md0_w=0
md0_r_old=0
md0_w_old=0
pretty(){
# Digest a single number into a pretty number
num=$1
zero=000
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
printf "%0.2f %s\n" $(eval echo \$$one.\$$two) $sign
}
while true
do
# Get new values
eval $(awk '{print "sda_r=" $3 " sda_w=" $7}' /sys/block/sda/stat)
eval $(awk '{print "sdb_r=" $3 " sdb_w=" $7}' /sys/block/sdb/stat)
eval $(awk '{print "sdc_r=" $3 " sdc_w=" $7}' /sys/block/sdc/stat)
eval $(awk '{print "sdd_r=" $3 " sdd_w=" $7}' /sys/block/sdd/stat)
eval $(awk '{print "md0_r=" $3 " md0_w=" $7}' /sys/block/md0/stat)
# Compute diffs
sda_r_diff=$(( ($sda_r - $sda_r_old) * 512))
sda_w_diff=$(( ($sda_w - $sda_w_old) * 512))
sdb_r_diff=$(( ($sdb_r - $sdb_r_old) * 512))
sdb_w_diff=$(( ($sdb_w - $sdb_w_old) * 512))
sdc_r_diff=$(( ($sdc_r - $sdc_r_old) * 512))
sdc_w_diff=$(( ($sdc_w - $sdc_w_old) * 512))
sdd_r_diff=$(( ($sdd_r - $sdd_r_old) * 512))
sdd_w_diff=$(( ($sdd_w - $sdd_w_old) * 512))
md0_r_diff=$(( ($md0_r - $md0_r_old) * 512))
md0_w_diff=$(( ($md0_w - $md0_w_old) * 512))
# Print the display
printf "\033[0;0H"
printf "sda: %12s %12s \033[K\n" "$(pretty $sda_r_diff)" "$(pretty $sda_w_diff)"
printf "sdb: %12s %12s \033[K\n" "$(pretty $sdb_r_diff)" "$(pretty $sdb_w_diff)"
printf "sdc: %12s %12s \033[K\n" "$(pretty $sdc_r_diff)" "$(pretty $sdc_w_diff)"
printf "sdd: %12s %12s \033[K\n" "$(pretty $sdd_r_diff)" "$(pretty $sdd_w_diff)"
printf "md0: %12s %12s \033[K\n" "$(pretty $md0_r_diff)" "$(pretty $md0_w_diff)"
# Save values
sda_r_old=$sda_r
sda_w_old=$sda_w
sdb_r_old=$sdb_r
sdb_w_old=$sdb_w
sdc_r_old=$sdc_r
sdc_w_old=$sdc_w
sdd_r_old=$sdd_r
sdd_w_old=$sdd_w
md0_r_old=$md0_r
md0_w_old=$md0_w
# Sleep until the next cycle
sleep 1
done
