linux磁盘空间不足报警脚本需用df -p配合awk提取真实挂载点使用率,超阈值(如85%)时通过logger或mail告警,并加入静默机制、flock防并发、cron定时执行及inode检查等健壮性设计。

Linux 下编写磁盘空间不足报警脚本,核心是定期检查 df 输出、设定阈值、触发通知(如邮件或日志),关键在于稳定、低开销、避免误报。
获取磁盘使用率并判断是否超限
用 df -h 查看挂载点使用率,但脚本中推荐用 df -P(POSIX 格式)保证字段对齐,再用 awk 提取已用百分比。跳过 tmpfs、devtmpfs 等虚拟文件系统,只监控真实磁盘挂载点(如 /、/home、/var)。
示例逻辑:
- 运行
df -P | awk '$5 ~ /[0-9]+%/ {sub(/%/,"",$5); if ($5 > 85) print $1, $5}',筛选使用率超 85% 的挂载点 - 对每行结果做进一步处理:提取设备名、百分比、挂载路径,便于后续告警内容生成
- 注意排除根目录下某些临时挂载(如 Docker overlay2 子目录),可通过白名单或路径匹配过滤
发送报警通知(邮件或写入日志)
报警方式要简单可靠。生产环境建议优先写入系统日志(logger),再配合 rsyslog 转发或集中收集;若需邮件,确保本地 mail 命令可用(如安装 mailutils 或 ssmtp)。
常用做法:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 写日志:
logger -t "disk-alert" "High disk usage on $mount: $usage%" - 发邮件:
echo "ALERT: $mount is ${usage}% full" | mail -s "Disk Warning" admin@example.com - 避免频繁报警:加入静默机制,比如同一挂载点 2 小时内不重复发信,可用临时标记文件或记录时间戳
部署为定时任务(cron)
把脚本保存为可执行文件(如 /usr/local/bin/check_disk.sh),设置权限 chmod +x,再添加到 cron。
推荐配置:
- 每 10 分钟检查一次:
*/10 * * * * /usr/local/bin/check_disk.sh >/dev/null 2>&1 - 避免脚本并发:可在脚本开头加锁(如
flock -n /tmp/disk_check.lock -c '实际检查逻辑') - 测试时先手动运行,确认输出和告警正常,再启用定时任务
增强健壮性的小技巧
真实环境中需考虑边界情况:
- 某些挂载点可能因权限问题无法读取,
df报错,脚本应忽略 stderr 或重定向错误输出 - inode 耗尽同样危险,可追加
df -i检查,当%IUse超 90% 也触发告警 - 脚本开头加上
#!/bin/bash和set -e(可选),出错时及时终止 - 预留配置区:把阈值、收件人、忽略路径等设为变量,方便统一维护
不复杂但容易忽略细节,写完记得验证日志输出和邮件接收效果,再观察几天实际运行情况。










