I have written a script to determine the Load average on the server as follows:
#!/bin/bash
loadavg=`top -b -n1 | grep -i load | awk -F, '{print$4}'| awk -F: '{print $2}'`
if [ "${loadavg}" -le  1 ]
then
echo "OK - Load Average = ${loadavg} | Load_Average=${loadavg}"
exit 0;
elif [ "${loadavg}" -gt 1 ] && [ "${loadavg}" -le 2 ]
then
echo "WARNING - Load Average = ${loadavg} | Load_Average=${loadavg}"
exit 1;
elif [ "${loadavg}" -gt 2 ]
then
echo "CRITICAL - Load Average = ${loadavg} | Load_Average=${loadavg}"
exit 2;
else
echo "UNKNOWN - Load Average = NaN | Load_Average=NaN"
fi
When the script is executed, it displays following error:
./loadavg.sh
./loadavg.sh: line 5: [:  0.06: integer expression expected
./loadavg.sh: line 9: [:  0.06: integer expression expected
./loadavg.sh: line 13: [:  0.06: integer expression expected
UNKNOWN - Load Average = NaN | Load_Average=NaN



top -b n1 | awk -F, '/load/ {print $4}'is a lot cleaner...loadavg=$( cut -d' ' -f1 </proc/loadavg )- and no, still not an integer expression. It's a fixpoint. If you want to use-leand friends, considercut -d' ' -f1 </proc/loadavg | cut -d. -f1, i.e. just drop everything after the integer part.awk.awkcan do floating points,bashor[cannot.uptime, not need to run one iteration oftopfor that.