要快速定位 linux 系统中占用磁盘空间较大的目录,应使用 sudo du -sh / 2>/dev/null | sort -hr 查看根下一级目录占用,再对异常目录如 /var 执行 sudo du -sh /var/ 2>/dev/null | sort -hr | head -n 10 深入分析,同时排除 /proc、/sys、/dev 等虚拟文件系统,并结合 df -h 定位满载分区,清理 /var/log/journal/、/var/cache/apt/archives/、~/.cache/ 或 docker 相关路径。

要快速定位 Linux 系统中占用磁盘空间较大的目录,核心是结合 du(disk usage)命令的统计能力与排序、筛选技巧,避免手动遍历。关键在于控制深度、排除干扰、聚焦真实大目录。
用 du 按大小排序查看顶层目录占用
在目标挂载点(如 / 或 /home)下运行:
sudo du -sh /* 2>/dev/null | sort -hr
说明:
- -s 表示汇总每个参数的总大小
- -h 以人类可读格式(K/M/G)显示
- 2>/dev/null 屏蔽权限不足的报错
- sort -hr 按人类可读数值逆序排列(最大的在前)
这能快速看到根下哪些一级目录最“吃”空间,比如 /var、/usr、/home 是否异常偏大。
深入某目录,查找具体大子目录
若发现 /var 占用过高,进一步排查:
sudo du -sh /var/* 2>/dev/null | sort -hr | head -n 10
建议:
- 加 head -n 10 只看前10名,避免输出过长
- 可叠加 -d 1(部分 GNU du 支持)限制深度为1层,效果同 /var/*
- 若想看两层深(如 /var/log/journal),可用:sudo du -sh /var/**/* 2>/dev/null | sort -hr | head -n 10(需启用 bash 的 globstar)
跳过特定路径,提升效率和准确性
以下目录通常无需深入检查,可排除以加快分析:
-
/proc、/sys、/dev:虚拟文件系统,du会报错或返回 0,加2>/dev/null已屏蔽 -
/run、/tmp:临时内容,大小波动大,除非明确怀疑临时文件堆积 - 已挂载的其他文件系统(如
/mnt下的外部盘):用df -h单独查,避免du误入
辅助定位:结合 df 和日志/缓存常见来源
df -h 先确认哪个分区满,再针对性查该挂载点;常见“隐形大户”包括:
-
/var/log/journal/:systemd 日志,默认可能占数 GB,可清理:journalctl --vacuum-size=200M -
/var/cache/apt/archives/(Debian/Ubuntu):旧安装包,用sudo apt clean清空 -
~/.cache/或/root/.cache/:用户级缓存,可安全删除(应用下次会重建) - Docker 用户注意:
/var/lib/docker/下镜像、容器日志、构建缓存易膨胀,用docker system df和docker system prune管理










