Unix / Linux shell程序(如bash)的一个强大的方面是它们支持常见的编程结构,使您能够做出决定,反复执行命令,创建新的功能等等。 您可以在称为shell脚本的文件中编写命令,并共同执行它们。
这为您提供了可靠而有效的系统管理手段。 您可以编写脚本来自动化任务 ,例如日常备份,系统更新等。 创建新的自定义命令/实用程序/工具等等。 您可以编写脚本来帮助您跟上服务器上正在发生的事情。
内存( RAM )是服务器的关键组件之一,它极大地影响了系统的整体性能。
在本文中,如果服务器内存不足,我们将共享一个小而有用的shell脚本来向一个或多个系统管理员发送警报电子邮件。
这个脚本特别适合用来关注带有少量内存的Linux VPS ( 虚拟专用服务器 ),比如约1GB (约990MB )。
测试环境设置
- 一个安装了postfix邮件服务器的CentOS / RHEL 7生产服务器 。
这是alertmemory.sh脚本的工作原理:首先检查可用内存大小,然后确定可用内存量是否小于或等于指定大小(本指南中为100 MB),用作基准测试最小可接受的空闲内存大小。
如果这种情况是真的,它将生成消耗服务器RAM的前10个进程的列表,并向指定的电子邮件地址发送警报电子邮件。
注意 :您将必须对脚本进行一些更改(特别是邮件发件人实用程序,使用适当的标志)以符合您的Linux发行版要求。
#!/bin/bash ####################################################################################### #Script Name :alertmemory.sh #Description :send alert mail when server memory is running low #Args : #Author :Aaron Kili Kisinga #Email :[email protected] #License : GNU GPL-3 ####################################################################################### ## declare mail variables ##email subject subject="Server Memory Status Alert" ##sending mail as from="[email protected]" ## sending mail to to="[email protected]" ## send carbon copy to also_to="[email protected]" ## 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命令从命令行进行检查。 一旦确认它正在工作,请定义您想要使用的实际值。
下面是一个显示示例报警邮件的屏幕截图。
Linux内存电子邮件警报
就这样! 在本文中,我们解释了如何在服务器内存(RAM)运行不足的情况下使用shell脚本向系统管理员发送警报电子邮件。 您可以通过下面的反馈表与我们分享有关此主题的任何想法。