在日常运维过程中,监控系统内存使用情况是非常重要的任务之一。free
命令是 Linux 系统中常用的工具,它可以显示系统的总内存、已用内存和空闲内存量。为了方便地进行长期监控或定期检查,我们可以编写一个自动化脚本来调用 free
命令,并将输出保存到文件中或者直接发送邮件通知。
以下是一个简单的 Bash 脚本示例:
#!/bin/bash
# 设置一些变量
LOGFILE="/var/log/free_memory.log"
EMAIL="admin@example.com"
THRESHOLD=90 # 阈值设置为90%,即当内存使用率达到或超过90%时触发报警
# 获取当前系统内存信息,并过滤不需要的列
free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }' > $LOGFILE
# 检查内存使用率是否超过阈值
CURRENT_USAGE=$(awk '{print $3*100/$2}' < $LOGFILE)
if (( $(echo "$CURRENT_USAGE >= $THRESHOLD" | bc -l) )); then
echo "Memory usage is above threshold. Current memory usage: $CURRENT_USAGE%" | mail -s "High Memory Usage Alert" $EMAIL
fi
echo "Script executed at $(date)"
free -m
命令并结合 awk
简化输出,只保留内存使用率。保存上述脚本到一个文件中,如 free_monitor.sh
,然后给该脚本添加执行权限:
chmod +x free_monitor.sh
接下来可以通过以下方式手动运行或设置定时任务:
手动运行:
./free_monitor.sh
使用 Cron 定时任务(每小时执行一次): 编辑 crontab 文件,添加以下行:
0 * * * * /path/to/free_monitor.sh
通过这种方式,我们可以轻松地自动化内存监控过程,并在需要的时候收到提醒。