Linux shell script for memory threshold email notification

Hello Folks,
I have created the script which use to send email notification when server memory breach the threshold limits. Script works fine, but the issue is sometimes i am receiving mail alerts for lower threshold memory also.

Please let me know why and any updates required in script?

# Shell script to monitor or watch the high Mem-load
# It will send an email to $ADMIN, if the (memroy load is in %) percentage
# of Mem-load is >= 80%
MEM_LOAD=`free -t | awk 'FNR == 2 {printf("Current Memory Utilization is : %.2f%"), $3/$2*100}'`
if [[ $MEM_LOAD > $LOAD ]];
 PROC=`ps -eo pcpu,pid -o comm= | sort -k1 -n -r | head -1`
 echo "Please check your processess on ${HOSTNAME} the value of cpu load is $CPU_LOAD % & 
 echo "$(ps axo %mem,pid,euser,cmd | sort -nr | head -n 10)" > $MAILFILE
 $CAT $MAILFILE | $MAILER -s "Memory Utilization is High > 80%, $MEM_LOAD % on ${HOSTNAME}" $mailto

Bash does not support floating point


Should be:


Second this line is incorrect:

MEM_LOAD=`free -t | awk 'FNR == 2 {printf("Current Memory Utilization is : %.2f%"), $3/$2*100}'`

Should be:

MEM_LOAD=$(free -t |  awk 'FNR == 2 {printf("%d"), $3/$2*100}')

Update as above and test it again.

Thanks so much, this has fixed the script. Now receiving only high cpu alerts only.

A post was split to a new topic: Linux shell script to monitor / watch the high cpu-load and send email

Still i have question, the memory shows 98%. But still buffers/cache has enough memory which is reclaimable memory.

[root@grst1smsap01 ~]# free -m
total used free shared buffers cached
Mem: 3832 3770 61 1869 212 2239
-/+ buffers/cache: 1319 2513
Swap: 8191 0 8191

Seems still -/+ buffers/cache: 1319 2513 available.

Need a script to calculate including buffer/cache memory also to avoid false alerts.
Please need your help to fix our requirement.