Linux 查找大目录占用磁盘空间方法

2次阅读

要快速定位 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 查找大目录占用磁盘空间方法

要快速定位 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 dfdocker system prune 管理
text=ZqhQzanResources