linux查看目录的命令是什么 linux命令查看目录
df -i 是唯一能查看全局 inode 使用率的命令,直接运行可显示各挂载点的 inode 总数、已使用数、空闲数及使用百分比(IUse%),当任一挂载点 IUse% 达到 100% 时将无法创建新文件。
df -i 是唯一能查看全局 inode 使用率的命令
直接运行 df -i,它会列出所有挂载点的 inode 总数、已用数、空闲数和使用百分比(IUse% 列)。只要某个挂载点的 IUse% 达到 100%,则 df -h 显示分区还有几十 GB 空间,也无法创建新文件。
常见判断点:df -i 默认包含 tmpfs、devtmpfs 等内存文件系统,它们的 IUse% 高是正常的,不用管真正要盯的是实际存业务数据的挂载点,比如/、/var、/home、/data如果只关心某个路径(如/var/log),直接运行 df -i /var/log ——它会自动定位到该路径所在的真实挂载点,不是查目录本身find + wc 是统计目录下文件总数最稳定的方式
想确认一个目录到底占了多少 inode,本质上就是统计它里面有多少个文件(含子目录里的)。 wc -l:文件数超10万就容易崩盘,报ls:内存耗尽或卡死。
正确做法:统计某目录下所有普通文件:find /path -type f | wc -l 统计所有文件+目录(即目录项总数):find /path -maxdepth 1 -type f -o -type d | wc -l 超大目录(百万级)防参数修复:find /path -type f -print0 | xargs -0 -n 10000 回显 | wc -l
注意:find 默认梯度,加 -maxdepth 1 才只算当前层;-xdev 可防止跨分区分散(比如不进 /proc 或 /sys)。用 find -xdev -printf '%h\n' 快速定位 inode 消耗大户
当 df -i 显示 /var 的 IUse% 是 98%,但你不知道是哪个子目录在撑爆 inode,就得按目录系统统计文件数。
推荐命令(以 /var 为例): CentOS Linux 7.9.2009
CentOS Linux 7.9.2009 是传统 CentOS Linux 7 的最后主要版本,也是很多企业历史服务器中仍然可能遇到的系统版本。它以稳定、兼容 RHEL 7个生态、文档丰富和软件支持广泛着称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。
CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全修复修复风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。 下载 find /var -xdev -type d -printf '%h\n' | 排序| uniq-c| 排序-nr | head -10
这行命令的意思是:遍历 /var 下所有目录,打印每个文件的父目录路径,再按路径重复统计、倒序排,取前 10。输出类似: 42560 /var/log 18320 /var/cache/apt/archives 9742 /var/lib/docker/overlay2
关键点:-xdev 必须加,否则会误入其他挂载点(比如容器卷或NFS)%h 是父目录路径,不是当前目录名;想看当前目录名,改用 %p 并拼 dirname 处理结果里数字大的,就是 inode 消耗主力,里面再用 find 。 -类型 f | wc -l 确认stat -f 查 inode 剩余绝对值,比 df -i 更准
df -i 的 IUse% 是四舍五入后的值,有时会误差。比如 100%,但其实还剩显示几十个 inode 因为 ext4 默认计量 5% 给 root 用户,普通用户看不到。
再用 stat -f / 查看原始数据更可靠:关注 Inodes: 和 Inodes Free: 两行(xfs 可能写成空闲 inodes)差值就是已用 inode 数,没有人口换算,也不受劳动力策略干扰对比 df -i / 的 IUsed 字段,若两者差几个,基本可断定是导致的“假满”
注意:stat -f 不支持通配符或相对路径,必须指定挂载点根路径(如 /、/var),不能写 /var/log。
真正难的不是查,而是区分“已删未释放”的inode——仍在进程读写已被rm的文件,df -i把它算作已用,但找不到对应路径。这种情况得靠lsof +L1或检查/proc/PID/fd/,不在常规统计路径里。
