精准定位大目录需用 du --max-depth 限制层级、--exclude 排除虚拟文件系统,并结合 find -size 查大文件;清理前须用 ls、lsof 确认内容与占用,优先使用 logrotate 等安全方式。

用 du 查大目录不难,关键在“精准定位+安全清理”。重点是控制深度、排除干扰、确认再删。
限制深度,快速定位“可疑”目录
du 默认递归所有子目录,容易卡在深层或大量小文件中。用 --max-depth=N 限定层级(比如只看当前层和下一层):
-
du -h --max-depth=1 /var | sort -hr | head -10—— 查/var下最大的10个一级子目录 -
du -sh /home/* | sort -hr | head -5—— 快速列出/home中前5个最大用户目录(-s汇总,-h可读)
跳过不想扫的路径,节省时间
像 /proc、/sys、/dev 这类虚拟文件系统不能用 du 统计,还可能报错。加 --exclude 排除:
du -sh --max-depth=2 /var --exclude=/var/log/journal --exclude=/var/cache | sort -hr | head -10- 也可用
--exclude-from=file.txt批量排除(每行一个路径模式)
结合 find 定位真正的大文件(非目录)
du 善于查目录大小,但单个超大文件(如日志、镜像、core dump)常藏在深处。用 find 配合 -size 精准抓取:
-
find /var -type f -size +100M -ls 2>/dev/null | sort -k7nr | head -10—— 找大于100MB的普通文件,按大小倒序 -
find /home -name "*.log" -size +50M—— 按扩展名+大小组合筛选
清理前务必确认,避免误删
看到大目录/文件别急着 rm。先检查内容、归属、是否正在被使用:
- 用
ls -lh看文件时间、权限;ls -ld看目录属性 - 用
lsof +D /path/to/dir或lsof /path/to/file查是否被进程占用 - 日志类目录(如
/var/log)优先用logrotate或journalctl --vacuum-size=500M清理,别直接删 - 不确定的,先
mv到临时位置观察几天,再决定是否rm
不复杂但容易忽略:du 的单位默认是 KB,-h 虽方便但排序时需用 sort -hr(r 逆序,h 识别 K/M/G);清理前建议备份关键配置,尤其是修改过 /etc 下的文件。


















