磁盘空间不足时,先不要急着删除文件。更稳妥的做法是先确认哪个分区接近用满,再用 du 从目录层级逐步缩小范围,最后筛选出占用较大的文件或目录。下面这套流程适合在 Linux 终端中直接执行。
先确认哪个分区空间紧张
df -h
df -h 会以易读的单位显示各个文件系统的总容量、已用空间、可用空间和使用率。重点观察“挂载点”和“使用率”两列:如果某个分区的使用率明显偏高,就以它对应的路径作为后续排查起点。
例如,根目录分区显示空间紧张,就从 / 开始检查;如果某个用户目录所在分区异常,则可以直接检查对应的用户目录。不要只看“可用空间”这一列,因为不同文件系统的显示方式可能不同,使用率更适合快速判断问题范围。
用 du 查看根目录下的占用分布
确认从根目录排查后,可以先查看第一层目录:
sudo du -xhd1 / 2>/dev/null | sort -h
这条命令可以拆开理解:
du用于统计目录和文件占用的磁盘空间;-h使用易读的单位显示大小;-d1只查看当前路径下一层目录;-x限制在当前文件系统内统计;2>/dev/null隐藏因权限不足产生的错误信息;sort -h按易读的容量数值排序。
排序结果通常会把占用较小的目录放在前面,占用较大的目录放在后面。这样可以迅速判断问题集中在系统目录、用户目录,还是某个应用数据目录中。
如果不使用 sudo,部分目录可能因为权限不足无法读取,结果会不完整。使用管理员权限前,应确认当前账号具备相应权限,并避免在不清楚用途的情况下修改或删除系统文件。
继续进入占用较大的目录
假设上一步发现 /var 占用较大,就继续查看它下面的目录:
sudo du -xhd1 /var 2>/dev/null | sort -h
如果 /var/log 或其他子目录明显偏大,再继续向下缩小范围:
sudo du -xhd1 /var/log 2>/dev/null | sort -h
排查时不必一次把所有层级都列出来。每执行一次命令,就根据结果选择一个占用较大的目录继续检查。这样更容易判断问题究竟集中在哪一层,也能避免终端输出过长而难以阅读。
如果只想快速查看当前目录下的项目,可以使用:
du -sh ./* 2>/dev/null | sort -h
这里的 * 会匹配当前目录中的普通项目,但不会匹配以点号开头的隐藏项目。因此,当结果与实际占用明显不一致时,要记得隐藏目录可能没有被这条命令统计到。对于用户目录或应用目录,隐藏目录有时也可能占用较多空间,应单独核对。
筛选占用较大的文件和目录
确定重点目录后,可以用 du -ah 展开其中的文件和子目录,再按容量从大到小排序:
sudo du -ah /var/log 2>/dev/null | sort -hr | head -n 30
这条命令的作用是:
-a同时显示文件和目录;sort -hr按易读的容量值倒序排列;head -n 30只保留前 30 项,便于快速查看。
输出中可能同时出现一个大目录和它里面的大文件。例如,某个目录显示占用较大,目录内部又列出一个同样很大的文件,这是正常现象,因为目录的统计值包含其下级内容。分析时要继续进入该目录,确认真正占用空间的文件,而不是把目录和文件的数值重复相加。
如果只想先看某个路径中最占空间的项目,可以减少显示数量:
sudo du -ah /path/to/check 2>/dev/null | sort -hr | head -n 20
将 /path/to/check 替换为实际排查路径,例如前面发现占用较大的目录。命令中的路径必须准确,尤其是包含空格或特殊字符时,不要凭感觉直接拼写。
如何判断问题范围
如果 df -h 显示某个分区接近用满,而 du 在对应路径下也能找到一个或多个大目录,通常说明问题就在这些目录的可见内容中。接下来应继续按目录层级检查,直到找到具体文件或明确的数据目录。
如果 df 显示的已用空间明显高于 du 统计出的目录总量,不要立即认定命令出错。两者统计角度不同:df 关注文件系统已经分配的空间,du 主要统计目录树中仍然可见的文件。此时应先重新确认排查路径、权限和统计范围,尤其注意是否遗漏了隐藏目录,或是否因为权限问题导致部分目录没有被读取。
命令输出中的单位也要保持一致理解。du -h 和 df -h 会使用易读单位显示结果,但它们的舍入方式和统计对象不同,因此不必要求两个命令的数字完全相等。排查的重点是找出占用最大的路径,以及它是否与空间紧张的分区相对应。
删除前先核对路径和用途
找到大文件后,先查看它的完整路径、文件名和所在目录,不要直接根据排序结果执行删除命令。尤其要注意以下几类情况:
- 路径是否确实位于刚才发现空间紧张的分区;
- 文件名是否包含空格、特殊字符或容易混淆的字符;
- 文件是临时数据、日志、缓存,还是正在使用的业务数据;
- 当前账号是否拥有修改或删除它的权限;
- 删除后是否会影响正在运行的程序或后续排查。
可以先用普通目录查看命令确认目标:
ls -lh /path/to/check
如果目标是一个目录,应再次查看目录内部的占用情况,而不是直接删除整个目录。对于日志、缓存或临时文件,也应先确认其用途和是否可以重新生成。仅凭文件大小无法判断文件是否能够安全删除。
确认无误后,再选择符合实际情况的清理方式。清理操作应尽量针对明确的文件或经过核对的目录,避免使用范围过大的通配符。执行删除前,可以先把准备操作的路径打印出来或复制保存,减少路径写错造成误删的风险。
一套稳妥的排查顺序是:先用 df -h 确认空间紧张的分区,再用 du -xhd1 判断大目录,进入重点目录后继续使用 du 缩小范围,最后用 du -ah ... | sort -hr | head 找出具体的大文件和大目录。每一步都应根据输出决定下一步,而不是直接在根目录下进行大范围删除。













