Linux监控全局inode使用率需用df -i --local提取非虚拟文件系统Use%值,设阈值(如生产环境85%警告、95%严重),通过cron定时执行脚本并记录日志,避免因inode耗尽导致新建文件失败。

在 Linux 系统中监控全局 inode 使用率,核心是定期读取 df -i 输出并判断阈值,再通过简单脚本实现告警或记录。关键不在于复杂逻辑,而在于准确提取、稳定执行和及时响应。
获取并解析全局 inode 使用率
使用 df -i 查看所有挂载点的 inode 使用情况,重点关注 Use% 列。需排除虚拟文件系统(如 tmpfs、devtmpfs)和只读挂载,避免误报:
- 用
df -i --local自动跳过网络和虚拟文件系统 - 用
awk提取非标题行中 Use% > 0 的数值,并过滤掉 "Use%" 字样 - 示例提取命令:
df -i --local | awk 'NR>1 && $5 ~ /%/ {gsub(/%/,"",$5); if($5>0) print $5, $1}'
设置合理阈值并触发响应动作
inode 耗尽比磁盘空间更危险——即使磁盘有空余,也可能因无可用 inode 导致新建文件失败。建议按场景设定阈值:
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 生产服务器:警告阈值设为 85%,严重阈值设为 95%
- 日志频繁写入的节点(如
/var/log单独挂载):单独监控,阈值可略低(如 80%) - 达到阈值后可执行:发送邮件(
mail或sendmail)、写入日志(logger)、清理临时小文件(如find /tmp -type f -mmin +60 -delete,谨慎使用)
以 cron 定时运行并保障脚本健壮性
将脚本加入 crontab 实现周期检查(如每 10 分钟一次),同时注意几点:
- 脚本开头指定 SHELL 和 PATH,避免 cron 环境缺失命令(如
#!/bin/bash+PATH=/usr/local/bin:/usr/bin:/bin) - 用
set -e让关键错误中断执行,用set -u防止未定义变量出错 - 记录执行时间戳和结果到日志文件,便于回溯:
echo "$(date): $(df -i --local | awk 'NR>1 && $5 ~ /%/ {gsub(/%/,"",$5); if($5>90) print $5,$1}')" >> /var/log/inode-monitor.log
快速手动验证与补充排查手段
脚本上线前,先人工确认高 inode 占用位置:
- 查哪个目录小文件最多:
find /path -xdev -type f | cut -d/ -f2 | sort | uniq -c | sort -n - 查特定挂载点 inode 总数及已用:
df -i /mount/point - 常见高 inode 源:
/var/spool/postfix/maildrop(积压邮件)、/proc(伪文件系统,忽略)、容器 overlay 目录(/var/lib/docker/overlay2)、应用缓存目录
不复杂但容易忽略:监控的是“已用 inode 数占总量比例”,不是绝对数量;不同文件系统默认 inode 数量差异大,所以必须看百分比。脚本写好后,用 sh -x your_script.sh 调试输出,确保每步逻辑清晰、路径安全、权限足够。

















