Here's an updated version.
#!/bin/sh PROGS_TO_TEST_FOR="make top ls script screen cvs cvsup" for processing in $PROGS_TO_TEST_FOR; do CPUUSAGE=`ps awux | grep $processing | grep -v grep | awk '{ print $3 }' | tail -n1` CPUUSAGEB=`echo 100 \* $CPUUSAGE | bc` RUNNINGCMD=`ps awux | grep $processing | grep -v grep | awk '{ print $11 }' | tail -n1` PID=`ps awux | grep $processing | grep -v grep | awk '{ print $2 }' | tail -n1` if [ $CPUUSAGEB -gt 30 ]; then echo "$PID $RUNNINGCMD using more than 30 cpu. restarting" kill $PID exec $RUNNINGCMD fi done