stat是查看单个文件inode元数据最准确的命令,输出包含inode号、大小、块数、权限、所有者、atime/mtime/ctime、硬链接数等;stat -f可查文件系统级inode总量与剩余量,比df -i更精确;ls -i和find -inum仅适用于编号查询与路径定位,不反映系统整体inode压力。

直接看 stat,别用 ls -i 只查编号——它不显示 inode 总量、剩余量、硬链接数、时间戳精度这些关键字段。
stat 查单个文件的 inode 元数据
这是最准的单文件 inode 信息入口,输出包含 inode 号、大小、块数、权限、所有者、三个时间戳(atime/mtime/ctime)、硬链接数等。注意:stat 不显示文件名本身,也不显示所在文件系统的 inode 总量。
- 查看普通文件:
stat /etc/hosts - 若只关心 inode 号和硬链接数,加格式化输出:
stat -c "%i %h" /etc/hosts(%i是 inode 号,%h是硬链接数) - 注意 ctime 不是“创建时间”,而是“状态变更时间”——权限改了、属主变了、链接数增减了都会触发它
stat -f 查文件系统级 inode 容量
想确认整个分区还剩多少 inode 可用,必须用 -f 选项。它读取的是 superblock 中的全局统计,和 df -i 底层来源一致,但字段更原始、无百分比换算。
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
- 查根分区:
stat -f /,重点看Inodes:和Inodes Free:两行 - 差值就是已用 inode 数,不是
IUse%那种四舍五入后的值,更精确 - 不同文件系统(ext4/xfs/btrfs)对
stat -f输出字段名略有差异,xfs 可能显示free inodes而非Inodes Free,但含义一致
df -i 是日常监控的首选,但别只盯百分比
df -i 输出快、带挂载点、有百分比,适合巡检;但它隐藏了两个容易误判的细节:一是小分区默认 inode 数少(比如 1GB 的 /boot 分区可能只有几万个 inode),二是某些日志轮转策略会生成海量空文件,快速耗尽 inode 却不占空间。
- 执行
df -i后,优先检查IUse%≥90% 的挂载点,再结合stat -f确认绝对数值 -
/dev/sda5显示IUse%100%,不代表真没 inode 了——ext4 会预留 5% 给 root,普通用户看到的是 100%,root 还能写 - 如果
df -i某个分区显示IUse%异常高,但stat -f显示Inodes Free还有几千,大概率是该分区被 mount 时加了noatime或relatime,不影响 inode 计数,只是时间戳更新策略不同
ls -i 和 find -inum 的定位局限
ls -i 只列当前目录下每个条目的 inode 号,find -inum 只能反查路径,两者都不反映文件系统整体压力。它们在清理场景中容易误导:比如你用 find /tmp -inum 123456 找到一个大文件,删掉后 df -i 的 IUse% 可能几乎不变——因为那个 inode 对应的其实是已被删除但进程仍打开的文件(unlinked but held open),真正释放要等进程关闭 fd。
- 确认是否为“幽灵文件”:
lsof +L1列出所有 link count=0 但仍有进程打开的文件 -
ls -i的输出里,目录项的 inode 号和它自身内容的 inode 号是同一个,但目录里每个文件名都指向各自独立的 inode,这点常被忽略 -
find -inum必须指定搜索起点(如find /var -inum 123456),全盘搜(find / -inum ...)会因权限报错中断,加2>/dev/null会掩盖真实路径缺失问题
inode 不是动态分配的资源,它在 mkfs 时就定死了总数。查的时候看 stat -f 得绝对数,监控时盯 df -i 的百分比,定位时别跳过 lsof +L1 ——很多 “inode 耗尽” 实际是进程没释放句柄,不是真没号了。










