Linux磁盘监控需用df -P -x排除虚拟文件系统,提取Use%列与分级阈值比对,匹配挂载点触发syslog/钉钉告警,并通过时间戳防抖和状态变化检测避免误报。

当 Linux 系统磁盘使用率超过阈值时,及时发现并处理能避免服务中断、日志写入失败或容器崩溃等问题。核心思路是:用 df 获取使用率,用 awk 提取关键字段,结合条件判断触发通知(如邮件、钉钉或系统日志)。
获取真实挂载点使用率(避开虚拟文件系统干扰)
df -P 输出格式稳定,适合脚本解析;加上 -x 参数可排除 tmpfs、devtmpfs 等内存伪文件系统,避免误报。
- 推荐命令:
df -P -x tmpfs -x devtmpfs -x debugfs -x sysfs -x proc - 重点关注
Use%列(第5列),但需去掉百分号再转为数字比较 - 跳过标题行(
NR>1)和根目录以外的低风险路径(如/boot可单独设更高阈值)
设定分级告警阈值并精准匹配目标分区
不同挂载点重要性不同,不应统一阈值。例如 / 和 /var/log 需更严格,而 /home 可略宽松。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 用数组或配置文件定义路径与阈值映射,如:
declare -A THRESHOLDS=(["/"]=85 ["/var/log"]=90 ["/data"]=92) - 脚本中逐行读取
df结果,提取Mounted on(第6列)和Use%(第5列) - 查表获取该路径对应阈值,若实际使用率 ≥ 阈值,记录告警项
选择轻量可靠的通知方式
生产环境不建议依赖外部邮箱服务(可能被拦截或延迟),优先用本地日志 + 外部轮询,或集成企业常用通道。
- 写入 syslog:
logger -t "disk-monitor" "ALERT: / used 93%",便于集中采集(如通过 rsyslog 或 filebeat) - 发钉钉机器人:用
curlPOST JSON,需提前获取 Webhook 地址和密钥(加签名更安全) - 临时邮件(测试用):
echo "Disk full on $(hostname)" | mail -s "Disk Alert" admin@example.com
加入防抖与静默机制避免刷屏
磁盘持续高位时,每分钟都报警毫无意义,需控制频率和状态跟踪。
- 记录上次告警时间戳到临时文件(如
/tmp/disk_alert_last),两次告警间隔至少 30 分钟 - 只对“从正常→超限”状态变化发送告警,恢复时不发(或发恢复通知需另设开关)
- 检查
df是否执行成功,失败时记录错误并退出,防止误判
把逻辑封装成可定时执行的 shell 脚本,配合 crontab 每 5–10 分钟运行一次,就能实现稳定可靠的磁盘监控。不复杂但容易忽略细节,关键是过滤噪音、区分路径、控制节奏。

















