需立即定位清理大文件以防服务宕机:先用df -h | sort -k5,5hr查告急分区,再用du逐级排查目录,接着用find搜索超大文件,最后按日志、缓存、Docker等分类安全清理。

磁盘快满了,得马上定位并清理大文件,不能等服务挂了才动手。核心思路是:先看哪块盘满了,再一层层缩小范围,最后精准删或清空,全程避免误删关键数据。
一、快速确认哪个分区告急
用 df -h 查整体占用,加排序一眼锁定问题分区:
- df -h | sort -k5,5hr —— 按“Use%”倒序排,排第一的就是最危险的
- 重点关注 Mounted on 列,比如
/、/var、/home或/var/lib/docker - 如果看到
overlay2或docker占用高,大概率是容器镜像或日志撑爆了
二、逐级定位“空间杀手”目录
从问题分区根目录开始,用 du 剥洋葱式排查:
- du -sh /* 2>/dev/null | sort -rh | head -10 —— 看根下前10大一级目录
- 假如
/var异常大,就进它:du -sh /var/* 2>/dev/null | sort -rh | head -10 - 继续深入,比如发现
/var/log或/var/lib/docker/overlay2是大户,再针对性查
三、直接揪出超大单个文件
适合已知大致位置,或想跳过目录层级直接找“巨无霸”:
-
find /var/log -type f -size +100M -ls —— 查
/var/log下所有超100MB的文件,带详细信息 -
find / -xdev -type f -size +500M 2>/dev/null | xargs ls -lh —— 全盘搜500MB以上文件(
-xdev防止跨文件系统误搜) - 加
| head -20可限制输出数量,避免刷屏
四、安全清理不踩坑
找到目标后,别急着 rm -rf,分情况处理:
- 日志类大文件:优先用 truncate -s 0 filename 清空内容,保留文件结构和权限
- 旧日志归档:用 find /var/log -name "*.log" -mtime +7 -exec gzip {} \; 压缩,省空间又可追溯
-
临时缓存:清理
/tmp、/var/tmp前先 find /tmp -type f -mtime +1 -ls 确认无正在使用的文件 -
Docker 占用高:运行 docker system prune -a --volumes(注意加
--volumes才清卷),或手动清理/var/lib/docker/overlay2前先docker ps -a确认无重要停用容器










