Determining system info
Josh Carroll
josh.carroll at psualum.com
Sun Nov 5 20:15:44 UTC 2006
> if [ "$TYPE" = "load" ]; then
> INDATA=`cat /proc/loadavg | cut -d ' ' -f2 | sed 's/\.//g' | sed
> 's/^0//g'`
> OUTDATA=`cat /proc/loadavg | cut -d ' ' -f3 | sed 's/\.//g' | sed
> 's/^0//g'`
> fi
uptime | sed 's/.*load averages: //g' | cut -d, -f2 | sed 's/.*\.//g'
uptime | sed 's/.*load averages: //g' | cut -d, -f3 | sed 's/.*\.//g'
>
> if [ "$TYPE" = "processes" ]; then
> INDATA=`cat /proc/loadavg | cut -d ' ' -f4 | cut -d '/' -f 2`
> OUTDATA=`cat /proc/loadavg | cut -d ' ' -f4 | cut -d '/' -f 1`
> fi
top -d 1 | grep ' processes:' | awk '{print $1}'
top -d 1 | grep ' processes:' | sed 's/.*processes: *//g' | awk '{print $1}'
> if [ "$TYPE" = "network" ]; then
> LINE=`cat /proc/net/dev | grep $PARAM | sed s/$PARAM://`
> INDATA=`echo $LINE | awk '{print $1}' `
> OUTDATA=`echo $LINE | awk '{print $9}' `
> fi
I'd use snmpd for this one.
> if [ "$TYPE" = "swap" ]; then
> SWAPFREE=`cat /proc/meminfo | grep "SwapFree" | sed 's/ //g' | cut -d
> ':' -f2 | cut -d 'k' -f1`
> SWAPTOTAL=`cat /proc/meminfo | grep "SwapTotal" | sed 's/ //g' | cut -d
> ':' -f2 | cut -d 'k' -f1`
> SWAPUSED=`expr $SWAPTOTAL - $SWAPFREE`
> INDATA=$SWAPFREE
> OUTDATA=$SWAPUSED
> fi
swapinfo -k | grep -v '^Device' | awk '{print $4}'
swapinfo -k | grep -v '^Device' | awk '{print $3}'
(note: this assumes you only have one swap device)
> if [ "$TYPE" = "uptime" ]; then
> INDATA=`cat /proc/uptime | cut -d ' ' -f1`
> OUTDATA=`cat /proc/uptime | cut -d ' ' -f2`
> fi
You'd probably want some magic to parse the output of uptime and
convert the time value into an integer here.
> if [ "$TYPE" = "memory" ]; then
> INDATA=`free -bt | grep buffers\/cache | awk '{print $3}'`
> OUTDATA=`free -bt | grep buffers\/cache | awk '{print $4}'`
> fi
vmstat | grep -vE '^ *(procs|r b)' | awk '{print $4}'
vmstat | grep -vE '^ *(procs|r b)' | awk '{print $5}'
Good luck,
Josh
More information about the freebsd-questions
mailing list