用df -i配合阈值判断可实现可靠inode告警,需过滤伪文件系统、设定90%/95%分级阈值、添加静默抑制与防并发锁等防护措施。

直接用 df -i 配合阈值判断,再加日志或邮件通知,就能实现可靠告警。关键不是写得多复杂,而是避开常见坑——比如忽略虚拟文件系统、不防并发、没做静默抑制。
确认真实挂载点并过滤无效项
很多脚本直接对 df -i 全量输出做判断,结果把 tmpfs、devtmpfs、overlay 这类无 inode 限额或非磁盘的伪文件系统也纳入检查,导致误报。应只监控物理或持久化挂载点:
- 用
df -i -P(-P保证 POSIX 格式,字段稳定) - 跳过表头:
NR > 1 - 排除无用类型:
$5 != "-" && $5+0 > 0(过滤掉-和空值) - 白名单控制更稳妥:只检查
/、/var、/data、/home等业务相关路径
设定合理阈值并触发告警
inode 使用率超过 90% 就该预警,95% 视为紧急。不要照搬空间使用率的 80% 标准——inode 耗尽后新文件无法创建,影响比空间满更突然、更致命:
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 提取使用率:
gsub(/%/,"",$5); if ($5 > 90) print $1, $5 "%", $6 - 告警内容需包含设备名、挂载点、使用率、时间:
logger -t "inode-alert" "High inode usage on $device ($mount): ${usage}%" - 避免刷屏:同一挂载点 1 小时内不重复记录,可用
touch /tmp/.inode_alert_$(basename $mount)+find /tmp -name ".inode_alert_*" -mmin +60 -delete实现简易静默
防止脚本自身引发问题
运维脚本一旦出错,可能让问题雪上加霜。必须加入基础防护:
- 开头加锁:
flock -n /tmp/inode_check.lock -c '实际逻辑',避免 cron 多次重叠执行 - 忽略权限错误:
df -i 2>/dev/null,防止因某个目录不可读导致整个脚本中断 - 失败退出:
set -e,任一命令非零退出即终止,不继续执行后续误操作 - 测试时先手动跑通,确认能正确识别
/var/spool/postfix/maildrop或/var/lib/docker/overlay2这类高 inode 风险目录
不复杂但容易忽略。

















