我有一台 Linux 服务器。我想监控内存使用量,如果内存使用量超过某个阈值(比如说 512 MB),则让服务器自动向管理员发送电子邮件。
我怎样才能做到这一点?
答案1
您可以通过free
命令获取内存使用情况。对其输出进行一些分析将为您提供当前使用的内存:
free -m | awk '/buffers\/cache/ {print $3}'
然后,您可以使用命令发送电子邮件mail
(假设您的服务器上已配置邮件链):
echo -e "Mail content." | mail -s "Subject" "[email protected]"
通过这个,您可以编写一个小脚sh
本来检查内存使用情况并在需要时发送邮件:
#!/bin/sh
memuse=$(free -m | awk '/buffers\/cache/ {print $3}')
if [ $memuse -ge 512 ]; then
message="RAM limit exceeded in server alpha.\nCurrent use is $memuse MiB."
echo -e "$message" | mail -s "RAM monitoring" "[email protected]"
fi
现在,您只需要定期运行此脚本。例如,我们可以cron
通过添加以下内容来每分钟运行一次/etc/crontab
:
* * * * * /root/ram_monitoring.sh
(假设您已保存脚本/root/ram_monitoring.sh
并且您有一个正常运行的 cron 守护进程。)