#!/bin/bash
# Set the threshold value for memory usage in percentage
THRESHOLD=80
# Get the total physical memory and free physical memory
if [ -f /etc/redhat-release ]; then
# CentOS
TOTAL_MEM=$(free | awk '/^Mem:/ {print $2}')
FREE_MEM=$(free | awk '/^Mem:/ {print $4}')
elif [ -f /etc/lsb-release ]; then
# Ubuntu
TOTAL_MEM=$(free | awk '/^Mem:/ {print $2}')
FREE_MEM=$(free | awk '/^Mem:/ {print $7}')
else
echo "Unsupported operating system"
exit 1
fi
# Calculate the used memory percentage
USED_MEM=$((100-((FREE_MEM*100)/TOTAL_MEM)))
# Check if the memory usage is above the threshold
if [ $USED_MEM -gt $THRESHOLD ]; then
# If the memory usage is above the threshold, send an email notification
echo "Warning: Memory usage is above threshold of $THRESHOLD%" | mail -s "Memory Usage Alert" user@example.com
fi
In this script, the
THRESHOLD
variable is set to 80, which represents the percentage of memory usage that should trigger an alert. The script first checks if the operating system is CentOS or Ubuntu by checking the existence of the
/etc/redhat-release
or
/etc/lsb-release
file.
The script then uses the
free
command to get the total physical memory and free physical memory. For CentOS, the
awk
command is used to extract the values from the second column, while for Ubuntu, the
awk
command is used to extract the values from the seventh column.
The script then calculates the used memory percentage and checks if it is above the threshold. If it is, the script sends an email notification using the
mail
command. You can replace
user@example.com
with the email address you want to receive the notification.
This script can be run as a cron job at regular intervals to continuously monitor the physical memory usage of your CentOS or Ubuntu system and alert you if it exceeds the specified threshold.