查大文件清空间关键在“快准稳”:先用df -h定位满载挂载点,再用du和find逐层查找大文件,接着用lsof检查已删未释放文件,最后安全清空或删除并配置logrotate预防复发。

查大文件、清空间,关键在“快准稳”——先定位瓶颈,再删得干净,避免删了还占空间。
第一步:看哪块盘满了
运行 df -h,一眼锁定使用率接近 100% 的挂载点(比如 / 或 /var)。注意看 Use% 列,别只盯 Avail 数值。如果根目录告急,后续所有操作都围绕 / 展开。
第二步:定位大目录和大文件
进入高占用挂载点(如 cd /),执行:
- du -sh * 2>/dev/NULL | sort -hr | head -n 10 —— 快速列出当前层前 10 大目录/文件
- 进到可疑大目录(如 /var/log),重复上一步,逐层下钻
- 想直接扫全系统前 10 大文件?用:
find / -xdev -type f -size +100M 2>/dev/null -print0 | xargs -0 du -h | sort -hr | head -n 10
(-xdev 防止跨分区搜索,2>/dev/null 屏蔽权限报错)
第三步:删之前确认是否还在被进程占用
常见陷阱:删了日志文件,df -h 空间却不释放。原因往往是进程仍在往已删除文件的 inode 写入。
- 检查某路径下是否有“已删但未释放”的文件:
lsof +L1(显示链接数为 0 的打开文件) - 或针对具体目录查:
lsof | grep ‘/var/log’ | grep deleted - 看到结果后,要么重启对应服务(如 systemctl restart rsyslog),要么 kill 进程(kill -HUP PID 或 kill -9 PID)
第四步:安全清理与预防
别一上来就 rm -rf,先确认内容:
- 日志类文件(*.log、catalina.out、messages)可清空:
truncate -s 0 filename(比删除更安全,不中断进程) - 备份或临时文件(*.tar.gz、*.tmp、/tmp/*)确认无用后再删
- 启用日志轮转(logrotate)防止复发,配置示例可加到 /etc/logrotate.d/ 下
整个过程不需要额外安装工具,核心命令都是系统自带。重点不是命令多炫,而是顺序不能乱:看空间 → 锁目录 → 找文件 → 查占用 → 再清理。