Description
I needed this to do some testing with a load problem I had. One of our server would spike in load for a minute or two, but at random times.
I needed to see what was generating these spikes, but did not want to sit around waiting for it to happen and being ready to hit enter on the commands i needed to run when the load was spiking. So I made this simple little script that you can edit to your needs.
It’s a bash script, and requires the package “bc” to be installed (install it using your package manager if you don’t already have it installed.)
I have tested the script on CentOS and Debian.
I have tried commenting everything in the script as good as possible, but if you have any changes feel free to post a comment.
The script used to monitor load average on a linux server
Copy the script below to a .sh file
#!/bin/bash #The minimum load average at 1 minute to trigger an event LIMIT="30" #run counter, is only used to see that the script is still running. RUNCOUNT="0" #enter an infinite loop while true do echo "Run count: $RUNCOUNT" RUNCOUNT=$[$RUNCOUNT + 1] #Get the current 1 min average load LOAD1MIN="$(uptime | awk -F "load average:" '{ print $2 }' | cut -d, -f1 | sed 's/ //g')" #set true or false, if the load is above the limit specified at the top of the script RESULT=$(echo "$LOAD1MIN > $LIMIT" | bc) #If the load is above the trigger limit, then break free of the loop to end the script if [ "$RESULT" == "1" ]; then echo "Load is above $LIMIT!" #Add the commands here that you want to execute when the 1min average load is above $LIMIT. One command per line #break out of the loop #You can remove this break, if you want the script to re-run automatically even when the load has been above $LIMIT. #in my case, i needed it to stop once the load was above $LIMIT so i added this break. break else echo "Load not above $LIMIT" fi #sleep for 1 second sleep 1 #clear the screen to make it all pretty clear #End of loop, if this it hit, then return to top of loop and start over done #exit the script, since the load was above $LIMIT we don't need to run it anymore exit 0
Make the script executable
Make it executable with the following command:
chmod +x <name of file>.sh
Hi,
Thanks for this script. I am a PhD student and had used your script to run my jobs on multi-core unix system. I want to acknowledge your script in my thesis. I want to mention more than just this URL. Can you please provide your name (and anything that you would want me to include, like your host institution/company).
Thanks,
Kau
All scripts on this blog are free, you can do with them whatever you like and don’t need to give me credit 🙂