Here’s a little BASH script that I made to monitor a virtual machine on an OS X box. Basically when its CPU usage gets higher than 75%, I get a Growl notification and a spoken warning from Bruce – one of the many Mac voices.
One thing to note:
ps -eo %cpu 207 | tail -1
is where the magic is done. Replace ‘207’ with the PID of whatever you want to monitor. It would be wiser to make this script monitor the process by name, but in my case I have the VM running all the time.
#!/bin/sh
# CPU threshold
readonly THRESHOLD=75
alarmState=0
while true; do
# make the output of our command a variable
set `ps -eo %cpu 207 | tail -1`
# turn float into int by truncating from decimal after
toInt=${1/.*}
# if our CPU usage is above our threshold
if [ "$toInt" -gt "$THRESHOLD" ]; then
# if we haven't displayed a Growl notification for this alarm
if [ "$alarmState" -eq "0" ]; then
alarmState=1
# display a Growl notification
growlnotify -sm "`date` Warning! CPU is at $toInt!"
fi
# shout out our warning
say -v Bruce "Warning! CPU is at $toInt!"
# consider putting 'sleep' here
else
# CPU usage is below our threshold
alarmState=0
fi
# pause the script for a second
sleep 1
done
