df -i 命令的 IFree 列即为文件系统当前剩余 inode 数量,是唯一可靠、全局、实时的指标;重点关注 IUse% ≥ 95% 或 100% 的分区,此时即使磁盘空间充足也无法创建新文件。

直接看 df -i 输出里的 IFree 列,就是当前文件系统剩余的 inode 数量。 不需要额外计算,也不用进目录翻找 —— 这是唯一可靠、全局、实时的指标。其他命令(如 ls -a | wc -l)只反映某一层目录的文件数,和实际可用 inode 无直接对应关系。
df -i 是查 inode 剩余量的唯一标准命令
它读取的是文件系统超级块中维护的 inode 总量与已分配计数,结果准确、开销极低:
-
df -i显示每挂载点的Inodes(总量)、IUsed(已用)、IFree(剩余)、IUse%(使用率)四列 - 重点关注
IUse%≥ 95% 的分区,尤其是显示100%的 —— 此时IFree为 0,即使磁盘空间还有 80% 也完全无法创建新文件或目录 - 加路径可限定范围:
df -i /home或df -i /dev/sdb1,避免被其他挂载点干扰 - 别用
df -hi:虽然能加-h让数字更易读,但IFree是纯整数,加-h后会变成 K/M 单位,反而丢失精度,毫无必要
stat -f 看 inode 总量和剩余量(适合脚本解析)
当需要在自动化脚本里提取精确数值(比如监控告警),stat -f 比 df -i 更稳定,输出格式固定,不易受列宽或本地化影响:
根据 package.json 中的 engines 字段自动检测 Node.js 版本需求,未安装 nvm 时自动安装并切换至对应版本。支持 Windows、macOS、Linux。适用于 Node.js 项目开发、版本切换和环境配置。
-
stat -f / | grep -E "^(Files|Free)"可快速拿到两行关键输出:Files: 50425856(总 inode)、Free: 42347034(空闲 inode) -
stat -f的Files字段 =df -i的Inodes,Free字段 ≈IFree(注意:ext4 下二者严格相等;xfs 下因延迟分配机制,Free可能略大于IFree,但差值通常可忽略) - 不建议用
stat查单个文件来推断系统剩余量 —— 它只返回该文件所在文件系统的统计,和stat -f效果一致,但多绕一步
ls -i 和 find -inum 不是用来查“剩余量”的
这两个命令常被误当作 inode 查看工具,但它们解决的是完全不同的问题:
-
ls -i只显示当前目录下每个条目的 inode 编号,不提供任何总量或剩余信息;配合wc -l统计文件数,只是粗略估算,且不含硬链接、不跨子目录,和 inode 资源是否耗尽无关 -
find -inum是逆向定位:已知某个 inode 号(比如从错误日志里看到),才用它查路径;你不可能靠它发现“还剩多少” - 真正要定位 inode 耗尽源头,得用递归统计目录文件数:
find /var -type d -exec sh -c 'echo "$(ls -a "{}" | wc -l) {}"' \; | sort -nr | head -10,但这属于“排查原因”,不是“查看剩余量”
inode 剩余量是个全局、静态、内核级指标,df -i 是唯一面向运维和排障场景设计的接口。别被 ls -i 的“i”字迷惑 —— 它只负责展示编号,不参与资源计量。真正卡住你写文件的,永远是 df -i 第二列那个 IFree 数字,而不是你当前目录里有多少个文件。










