Script to capture vmstat for specific interval
#!/bin/ksh if [ $# -eq 2 ] then PARENT_DIR=$1 SAMPLE_INTERVAL=$2 LOGDIR=$PARENT_DIR/`hostname` TOTALMEMORY=`cat /proc/meminfo | grep "MemTotal" | cut -f2 -d':'` KERNELTYPE=`readelf -h /lib/ld*.so | grep Class | cut -f2 -d: | sed -e 's/[A-Z]*//g'` CPUTYPE=`getconf LONG_BIT` TOTALCPU=`cat /proc/cpuinfo | grep "processor" | tail -1 | cut -f2 -d':'` CPUSPEED=`cat /proc/cpuinfo | grep "cpu MHz" | tail -1 | cut -f2 -d':'` OS=`uname` OSVERSION=`uname -r` HOSTNAME=`uname -n` #IP=`/sbin/ifconfig -a | grep "inet " | grep -v "127.0.0.1" | cut -f2 -d":" | cut -f1 -d" " | sed -e 'N' -e 's/\n/,/'` HARDWARE=`uname -p` MACHINETYPE=`uname -m` DATE=`date +"%m/%d/%Y %r"` dt_var=`date | tr -s " " ":" | cut -f2-6 -d":" | tr -s ":" "_"` vm_file_name=$LOGDIR"_vmstat_"$dt_var # Write Headers echo "#HostName: "$HOSTNAME > $vm_file_name echo "#OS: "$OS" "$OSVERSION" "$KERNELTYPE" bit" >> $vm_file_name echo "#Hardware: "$MACHINETYPE" "$HARDWARE >> $vm_file_name echo "#CPU: "`expr $TOTALCPU + 1`" CPU(s) "$CPUTYPE"-bit"$CPUSPEED" MHz" >> $vm_file_name echo "#Total Memory: "$TOTALMEMORY >> $vm_file_name #HDR1=`vmstat | head -1 | tr "-" " " | tr -s " " ","` #HDR2=`vmstat | head -2 | tail -1 | tr "-" " " | tr -s " " ","` #echo $HDR1 >> $vm_file_name #echo $HDR2 >> $vm_file_name vmstat $SAMPLE_INTERVAL | while read line; do echo "`date +"%Y-%m-%d"`"_"`date +%T`,$line" | tr -s " " "," | tr -s "_" " "; done >> $vm_file_name & p_id=$! echo $p_id >> $LOGDIR"_process_id" else echo "[Usage] : startmon_linux.sh <Output Directory> <Sample Interval>" fi