文档首页> Linux命令> Linux脚本实现文件系统使用率大于90%报警

Linux脚本实现文件系统使用率大于90%报警

发布时间:2025-11-14 00:36       

在Linux运维中,磁盘空间告警是系统监控的核心环节之一。若文件系统使用率超过90%仍未处理,极易导致系统写入失败、服务宕机或数据库损坏。下面介绍一种轻量级Shell脚本方案,可自动检测文件系统使用率并在超过阈值时发送报警信息。⚙️


一、设计思路 🧠

脚本核心思路:

  1. 调用 df -h 获取所有挂载点的使用率;
  2. 过滤出超过阈值(如90%)的分区;
  3. 生成告警信息;
  4. 可根据环境选择输出到终端、写入日志或通过邮件/钉钉等方式发送报警。

这种方案无须安装复杂监控系统,适合中小型服务器环境或快速自检脚本使用。


二、核心脚本实现 🧩

以下为完整可用脚本:

#!/bin/bash
# ======================================================
# Linux 文件系统使用率监控脚本
# 功能:检测各挂载点使用率,若超过90%则报警
# 作者:BlueEasy DevOps
# 日期:2025-11
# ======================================================

# 设置阈值(百分比)
THRESHOLD=90
# 告警日志文件
LOG_FILE="/var/log/disk_usage_monitor.log"
# 当前时间
DATE=$(date "+%Y-%m-%d %H:%M:%S")

# 读取文件系统使用情况
df -hP | awk 'NR>1 {print $5 " " $6}' | while read output; do
    USE=$(echo $output | awk '{print $1}' | tr -d '%')
    MOUNT=$(echo $output | awk '{print $2}')
  
    if [ "$USE" -ge "$THRESHOLD" ]; then
        MSG="⚠️ [磁盘告警] 时间: $DATE | 挂载点: $MOUNT | 使用率: ${USE}%"
        echo "$MSG" | tee -a "$LOG_FILE"
      
        # 可选:邮件或钉钉通知
        # mail -s "磁盘使用率告警 - $MOUNT" admin@example.com <<< "$MSG"
        # curl -X POST -H 'Content-Type: application/json' \
        #      -d "{\"msgtype\": \"text\", \"text\": {\"content\": \"$MSG\"}}" \
        #      https://oapi.dingtalk.com/robot/send?access_token=xxxxxx
    fi
done

三、脚本说明与执行方式 📜

项目 说明
df -hP 获取分区信息,-P保证输出固定列宽,便于解析
awk 'NR>1 {print $5 " " $6}' 跳过表头,仅提取使用率与挂载点
tr -d '%' 去除百分号,便于数值比较
tee -a 同时输出到屏幕与日志文件
mail/curl 可选扩展,用于邮件或钉钉通知

执行方法:

chmod +x /usr/local/bin/disk_monitor.sh
bash /usr/local/bin/disk_monitor.sh

如需定期执行,可配置Crontab:

*/10 * * * * /usr/local/bin/disk_monitor.sh >/dev/null 2>&1

表示每10分钟检测一次。


四、执行结果示例 🧾

假设 / 分区使用率达93%,日志输出如下:

⚠️ [磁盘告警] 时间: 2025-11-12 14:36:27 | 挂载点: / | 使用率: 93%

若一切正常,则不会产生输出,也不会写入日志。


五、扩展优化建议 🚀

  1. 多级告警机制
    • 85% 记录日志

    • 90% 邮件提醒

    • 95% 短信/即时通知

  2. 自动清理策略
    • 在检测到高占用时自动执行日志清理或临时文件清除。
  3. 多主机集中监控
    • 将脚本输出汇总至Prometheus、Zabbix或ELK系统中,形成统一监控面板。

六、核心原理表 🔍

阶段 动作 作用
监测阶段 执行 df -hP 获取实时磁盘使用率
分析阶段 awk提取字段 转换为数值判断
报警阶段 条件比较后输出 超阈值触发
扩展阶段 邮件/钉钉通知 快速响应问题

七、结语 🎯

该脚本实现了低耦合、高兼容、零依赖的文件系统告警机制。通过简单配置即可在任何Linux发行版中运行,有效预防磁盘爆满引发的系统风险。
一句话总结:

“监控不是复杂,而是要在关键点发声。” 🛠️