free命令自动化脚本

在日常运维过程中,监控系统内存使用情况是非常重要的任务之一。free 命令是 Linux 系统中常用的工具,它可以显示系统的总内存、已用内存和空闲内存量。为了方便地进行长期监控或定期检查,我们可以编写一个自动化脚本来调用 free 命令,并将输出保存到文件中或者直接发送邮件通知。

自动化脚本的基本需求

  1. 自动执行:可以在设定的时间间隔(如每小时)自动运行。
  2. 数据记录:将每次的内存使用情况记录到一个日志文件中,方便后续查看和分析。
  3. 报警机制:如果内存使用率超过某个阈值,则通过邮件通知管理员。

编写自动化脚本

以下是一个简单的 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)"

脚本解析

  1. 变量设置:定义了日志文件路径、报警邮箱地址以及内存阈值。
  2. 获取内存信息:使用 free -m 命令并结合 awk 简化输出,只保留内存使用率。
  3. 判断与报警:通过比较当前的内存使用率和预设的阈值来决定是否发送警报邮件。

执行脚本

保存上述脚本到一个文件中,如 free_monitor.sh,然后给该脚本添加执行权限:

chmod +x free_monitor.sh

接下来可以通过以下方式手动运行或设置定时任务:

通过这种方式,我们可以轻松地自动化内存监控过程,并在需要的时候收到提醒。