Linux 磁盘告急先查哪里:用 df、du 和 find 定位占用来源

2026-10-17 / 0 评论 / 1 阅读

Linux 磁盘告急先查哪里:用 df、du 和 find 定位占用来源 教程示意图

发布日期:2026-10-17。

适用场景

Linux 虚拟机提示无法写入文件,或者系统盘使用率持续上升时,直接清空日志很容易丢失故障证据。本教程适用于装有 GNU Coreutils 和 GNU Findutils 的常见 Linux 系统,例如 Ubuntu、Debian。目标是确认哪个文件系统紧张、哪些目录值得继续调查,以及是否存在大量小文件问题,最终形成一份供后续清理决策使用的清单。

以下操作不删除文件。首次练习从自己的主目录开始;检查业务目录前,应确认授权和扫描范围。BusyBox 等精简环境的参数可能不同,不能直接套用 GNU 工具的全部选项。

原理:三个工具观察不同层次

文件系统统计工具报告已挂载文件系统的整体空间;目录统计工具遍历能够访问的目录项,估算文件占用;文件查找工具按条件筛选具体文件。因此三者可以互相补充,却不能简单要求数字完全一致。

还要区分容量与索引节点。许多文件系统用索引节点保存文件元数据,大量很小的文件也可能耗尽可用节点,使新文件无法创建,即使容量还有剩余。整体统计的含义见 GNU 文件系统空间统计文档。

准备工作

打开普通用户终端,先确认当前目录和工具版本。以下命令没有需要填写的参数。

pwd
df --version
du --version
find --version

扫描会读取目录和文件元数据,大目录可能产生较多磁盘访问。业务繁忙时应缩小范围,避免多个终端同时反复扫描。不要为了消除权限报错而立刻把所有命令提升为管理员权限。

分步骤操作

第一步:确认紧张的是哪个文件系统

在同一个终端中设置本次调查目录,并分别查看容量与索引节点。

scan_root="$HOME"
df -h -- "$scan_root"
df -i -- "$scan_root"

scan_root 保存扫描目录,初始值为当前用户主目录。调查其他位置时,把赋值右侧改成自己有权检查的真实绝对路径,并保留双引号。第一条统计中的使用率反映容量情况,第二条中的索引节点使用率反映节点情况。注意输出的挂载点:主目录可能位于独立数据盘,不能凭目录名称推断它一定占用系统盘。

如果两个使用率都不高,写入失败也可能与权限、配额或只读挂载有关,应保留报错继续分辨,不要强行转入删除流程。

第二步:按目录逐层缩小范围

先查看扫描目录下一级子目录的占用。

du -x -h --max-depth=1 -- "$scan_root"

-x 限制递归进入其他文件系统,-h 使用较易阅读的单位,最大深度为一表示只展示当前层及下一层目录的汇总。它仍然需要遍历这些目录的内部内容,并不是只读取一层就结束。每个父目录的数字通常已经包含子目录,不能把所有行再次相加。

找出明显较大的子目录后,把变量改为该目录的真实绝对路径,再运行同一条命令。这样逐层深入,比一开始列出整台机器的所有文件更容易阅读。参数含义及统计限制见 GNU 目录占用统计文档。

第三步:列出值得核对的大文件

范围缩小后,查找逻辑长度超过 100 MiB 的普通文件。

find "$scan_root" -xdev -type f -size +100M -print

-xdev 同样限制跨文件系统遍历,-type f 只选择普通文件,-print 输出匹配路径。这里的 M 表示 1048576 字节;加号表示超过给定大小。没有输出只说明当前条件未匹配,也要确认是否同时出现权限错误。

文件逻辑长度不一定等于实际磁盘占用。稀疏文件可能显示很长,却只分配了少量磁盘块;因此这一步得到的是候选文件,不能直接视为可回收空间排行榜。筛选语义可参阅 GNU Findutils 文件大小文档。

第四步:如果节点紧张,改查文件数量分布

如果容量尚可但索引节点接近耗尽,继续找大文件可能偏离问题,应查看各目录的节点统计。

du -x --inodes --max-depth=1 -- "$scan_root"

对数字明显较大的目录逐层调查,常见候选包括缓存、任务输出和历史临时文件目录。统计较大只能证明值得检查,不能证明内容可以删除;需要确认对应应用和保留要求。

验证方法

记录扫描时间、挂载点、容量使用率、节点使用率,以及找到的重点目录。对候选文件同时查看普通长列表和实际占用。下面的 candidate_file 应填写为上一步发现的真实文件绝对路径,再执行后两行。

candidate_file='/请填写实际文件的绝对路径'
ls -lh -- "$candidate_file"
du -h -- "$candidate_file"

如果两个数字差异明显,先确认是否为稀疏文件等情况。最终清单应描述文件用途、归属应用和后续处理负责人,而不是只写“最大的文件”。

常见错误

看到权限不足时,不能把统计结果当成完整数据;看到目录总量与整体已用空间不同,也不能认定工具出错,因为扫描范围、文件系统元数据和其他存储特性可能不同。当前命令不会跨入独立文件系统,因此被跳过的挂载目录需要单独调查。若文件名包含换行,逐行展示容易混淆,不应把输出直接交给自动删除命令。

安全与回退

本流程只读取信息,不修改配置,停止扫描可在终端按 Ctrl+C,无需恢复文件。后续清理必须先确认备份和应用保留策略。数据库、虚拟磁盘及正在使用的日志应通过对应应用的受支持流程处理。删除文件前记录原位置和恢复方法,完成处理后重新查看同一挂载点的容量与节点统计,才能判断措施是否有效。

参考资料与转载说明

本文依据上述公开资料进行中文原创整理,不是逐句翻译,也不替代厂商手册。操作前请核对自己的版本、型号和备份。

评论一下?

OωO
取消