#!/bin/bash dir="/sys/kernel/debug/kvm" items=`ls -U $dir/exits $dir/dcr $dir/mmio $dir/sig $dir/light $dir/itlb_v $dir/itlb_r $dir/isi $dir/dtlb_v $dir/dtlb_r $dir/dsi $dir/inst_emu $dir/sysc $dir/dec $dir/ext_intr | grep -v 44x_tlb0` duration=2 summode="no" lph=20 line=-1 if [ $summode = "no" ] then declare -a values counter=0 for i in $items do values[$counter]=0 counter=`expr $counter + 1` done fi kvmstat_header() { for i in $items do printf "|%8s" `basename $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 $items do val=`cat $i` if [ $summode = "no" ] then cval=$val; val=`expr $cval - ${values[$counter]}` values[$counter]=$cval counter=`expr $counter + 1` fi printf "|%8d" $val done printf "|\n" sleep $duration done