#!/bin/bash kvmstatdir="/sys/kernel/debug/kvm" duration=2 summode="no" lph=20 line=-1 if [ $summode = "no" ] then declare -a values counter=0 for i in `ls $kvmstatdir` do values[$counter]=0 counter=`expr $counter + 1` done fi kvmstat_header() { for i in `ls $kvmstatdir` do printf "|%16s " $i done printf "|\n" } USAGE="Usage: `basename $0` [-d arg] [-l arg] [-hs]" while getopts hvsd:l: OPT; do case "$OPT" in h) echo $USAGE echo "d - sleep between reported lines" echo "l - number of lines betweeen headers" echo "s - summary mode (default is difference since last print)" exit 0 ;; v) echo "`basename $0` version 0.1" exit 0 ;; d) duration=$OPTARG ;; l) lph=$OPTARG ;; s) summode="yes" ;; \?) # getopts issues an error message echo $USAGE >&2 exit 1 ;; esac done while true do line=`expr $line + 1` line=`expr $line % $lph` if [ $line -eq "0" ] then kvmstat_header fi counter=0 for i in `ls $kvmstatdir` do val=`cat $kvmstatdir/$i` if [ $summode = "no" ] then cval=$val; val=`expr $cval - ${values[$counter]}` values[$counter]=$cval counter=`expr $counter + 1` fi printf "|%16d " $val done printf "|\n" sleep $duration done