linux磁盘告警脚本需用df -p解析、跳过虚拟文件系统、支持阈值/邮箱/忽略路径变量配置,结合flock锁、2小时防重告、inode检查,通过logger日志或邮件/webhook通知,并以cron每10分钟执行。

Linux 中配置磁盘空间不足自动告警,核心是写一个轻量、稳定、可复用的检查脚本,并通过 cron 定期执行,再搭配可靠的通知方式。不依赖复杂平台也能快速落地。
写一个带阈值判断的监控脚本
用 df -P(不是 df -h)保证字段对齐,避免解析出错。只关注真实挂载点,跳过 tmpfs、devtmpfs 等虚拟文件系统:
- 提取使用率:用
awk '$5 ~ /[0-9]+%/ {sub(/%/,"",$5); if ($5 > 85) print $1, $5, $6}' - 过滤根目录下 Docker overlay2 子路径等干扰项,可用
! /overlay2/ && ! /docker/排除 - 把阈值(如 85)、收件人邮箱、忽略路径都设为变量,方便后续统一调整
选择合适的通知方式
生产环境优先推荐写系统日志 + 集中采集,其次才是邮件或即时通讯:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 写日志最简单可靠:
logger -t "disk-alert" "ALERT: ${mount} is ${usage}% full",配合 rsyslog 或 journalctl 可转发到 ELK 或 Graylog - 发邮件需确保本地
mail命令可用(如安装mailutils),并提前配好 SMTP(QQ/163 邮箱需用授权码+SSL) - 推送到钉钉/企业微信,用 curl 调用 Webhook 即可,例如:
curl -X POST -H 'Content-Type: application/json' -d '{"msgtype":"text","text":{"content":"磁盘告警:'$mount' 使用 '$usage'%"}}' $WEBHOOK_URL
加锁、静默与防误报机制
避免脚本并发执行或高频告警影响运维体验:
- 开头加 flock 锁:
flock -n /tmp/disk_check.lock -c '实际检查逻辑' - 同一挂载点 2 小时内不重复告警:检查前读取
/tmp/disk_alert_${mount}.ts时间戳,距今不足 7200 秒就跳过 - 补充 inode 检查:
df -i | awk '$5 > 90 {print "INODE CRITICAL on", $1}',因为No space left on device不一定是空间满,也可能是 inode 耗尽
部署到 cron 并验证效果
保存脚本为 /usr/local/bin/check_disk.sh,赋予执行权限:chmod +x /usr/local/bin/check_disk.sh:
- 推荐每 10 分钟检查一次:
*/10 * * * * /usr/local/bin/check_disk.sh >/dev/null 2>&1 - 首次部署先手动运行,确认能输出日志或收到邮件;再观察 1–2 天,看是否在真正快满时触发
- 测试时可临时把阈值调低(比如设成 10%),或用
dd if=/dev/zero of=/testfile bs=1M count=500快速占满空间模拟告警










