统计目录inode占用需用find命令统计文件和目录总数,配合-xdev避免跨挂载点误算;通过逐层分析定位高密度子目录;结合df -i和stat -f确认系统级余量,注意ext4预留5% inode给root。

直接看目录本身不显示 inode 占用总量,因为 inode 是文件系统级资源,不是目录独有。要查一个目录对 inode 的实际压力,核心是统计它及其子目录里有多少文件和子目录——每个文件或目录都消耗一个 inode。
用 find 统计目录下文件总数
这是最常用也最有效的方法:
- 统计 /var/log 下所有普通文件数:
find /var/log -xdev -type f | wc -l - 包含隐藏文件(如
.tmp、.cache):find /var/log -xdev -name ".*" -o -type f | wc -l - 同时统计文件 + 目录总数(即全部 inode 消耗项):
find /var/log -xdev -type f -o -type d | wc -l
-xdev 很关键,防止跨挂载点误统计;没加它可能把 /proc 或 /sys 里的虚拟条目也算进来,但那些不占真实 inode。
按子目录排序,快速定位高密度区域
大目录下哪一层堆了最多小文件?用这个命令逐层分析:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
find /var -xdev -type d | xargs -I {} sh -c 'echo "$(find {} -maxdepth 1 -type f | wc -l) {}"' | sort -nr | head -10
输出类似:24856 /var/lib/docker/overlay2/xxx/diff,一眼就能看出哪个子目录在疯狂吃 inode。
结合 df -i 和 stat -f 确认系统级余量
光知道目录里有多少文件还不够,得看整个挂载点还剩多少 inode 可用:
- 先运行
df -i,找到目标目录所在挂载点(比如/var在/dev/sda3上) - 再查该分区真实剩余:
stat -f /var | grep -E "(Inodes|Free)"
注意:如果 df -i 显示 IUse% 是 100%,但 stat -f 显示 Inodes Free: 还有几千,说明 ext4 预留了 5% 给 root,普通用户已无法新建文件。
别被 ls -i 或 /proc 干扰判断
这些容易误导:
-
ls -i只显示当前目录下每个条目的 inode 编号,不反映数量压力 -
ls /proc | wc -l输出几万不代表 inode 耗尽——/proc是内存映射的虚拟文件系统,不消耗磁盘 inode - 看到大量
(deleted)文件名?说明有进程还开着已删除文件的句柄,得用lsof +L1找出来,删了文件也不释放 inode










