专业的linux技术站点
Controlled by you.

内存不足时发送电子邮件警报的Shell脚本

内存不足时发送电子邮件警报的SHELL脚本

Unix / Linux shell程序(如bash)的一个强大的方面是它们支持常见的编程结构,使您能够做出决策,反复执行命令,创建新功能等等。您可以在称为shell脚本的文件中编写命令并集体执行它们。

这为您提供了一个可靠而有效的系统管理手段。您可以编写脚本来自动化任务,例如日常备份,系统更新等; 创建新的自定义命令/实用程序/工具等等。你可以编写脚本来帮助你跟上服务器上正在发生的事情。

内存(RAM)是服务器的关键组件之一,它极大地影响了系统的整体性能。

在本文中,如果服务器内存不足,我们将共享一个小而有用的shell脚本,以向一个或多个系统管理员发送警报电子邮件。
是alertmemory.sh脚本的工作方式:首先检查可用内存大小,然后确定可用内存量是否小于或等于指定大小(本指南的目的为100 MB),作为基准标记最小可接受的空闲内存大小。

如果这种情况属实,它将生成使用服务器RAM的前10个进程的列表,并向指定的电子邮件地址发送警报电子邮件。

注意:您必须对脚本进行一些更改(特别是邮件发件人实用程序,使用适当的标志)才能满足您的Linux发行版要求。

检查服务器内存的Shell脚本

#!/bin/bash 
#######################################################################################
#Script Name    :alertmemory.sh
#Description    :send alert mail when server memory is running low
#Args           :       
#Author         :Aaron Kili Kisinga
#Email          :lonlyterminals@gmail.com
#License       : GNU GPL-3 
#######################################################################################
## declare mail variables
##email subject 
subject="Server Memory Status Alert"
##sending mail as
from="server.monitor@example.com"
## sending mail to
to="admin1@example.com"
## send carbon copy to
also_to="admin2@example.com"
## get total free memory size in megabytes(MB) 
free=$(free -mt | grep Total | awk '{print $4}')
## check if free memory is less or equals to  100MB
if [[ "$free" -le 100  ]]; then
## get top processes consuming system memory and save to temporary file 
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head >/tmp/top_proccesses_consuming_memory.txt
file=/tmp/top_proccesses_consuming_memory.txt
## send email if system memory is running low
echo -e "Warning, server memory is running low!\n\nFree memory: $free MB" | mailx -a "$file" -s "$subject" -r "$from" -c "$to" "$also_to"
fi
exit 0

在创建脚本/etc/scripts/alertmemory.sh后,将其设置为可执行文件并将其链接到cron.hourly。

#chmod +x /etc/scripts/alertmemory.sh
#ln -s -t /etc/cron.hourly/alertmemory.sh /etc/scripts/alertmemory.sh

这意味着只要服务器正在运行,上面的脚本将在每1小时后运行一次。

提示:您可以测试它是否按预期工作,将基准标记值设置得稍高,以轻松触发电子邮件发送,并指定一个小约5分钟的时间间隔。

然后继续使用脚本中提供的free命令从命令行进行检查。一旦确认它正在工作,请定义您想要使用的实际值。

以下是显示示例警报邮件的屏幕截图。

打赏作者

您的支持将鼓励我们继续创作!

[微信] 扫描二维码打赏

[支付宝] 扫描二维码打赏

正在跳转到PayPal...
转载请注明出处:北慕城南's Blog » 内存不足时发送电子邮件警报的Shell脚本

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址