先确认哪个挂载点真满了,再逐层定位大目录和残留文件,最后验证再清理——跳过这三步直接删,容易误伤系统或释放不了空间。需依次执行df -h查use%超90%的挂载点、df -ih查inode是否耗尽、du -sh /* | sort -hr定位大目录、find结合-mtime和-size深挖残留文件,并验证占用进程及可删性后,再用apt clean或truncate等安全命令清理。

先确认哪个挂载点真满了,再逐层定位大目录和残留文件,最后验证再清理——跳过这三步直接删,容易误伤系统或释放不了空间。
看清楚哪块盘满了
运行 df -h 查各分区使用率,重点关注 Use% 超过 90% 的挂载点。比如输出里 /dev/sda1 挂在 / 且用了 97%,那所有后续操作都聚焦在根目录下。顺手加一句 df -ih,检查 inode 是否耗尽——很多临时小文件(如日志轮转产生的 .1、.2.gz)不占多少空间,但会把 inode 填满,导致“有空间却写不了文件”。
快速锁定吃空间的大目录
进入问题分区后,执行:
du -sh /* 2>/dev/null | sort -hr | head -10
这条命令列出根下一级子目录的大小,按从大到小排序。常见高危目标包括:
- /tmp 和 /var/tmp:服务崩溃后遗留的 socket、lock 或未清理的临时数据
- /var/log:旧日志未轮转、journald 日志无限制、应用自写未压缩日志
- /var/cache:apt/dnf 缓存、pip 包、docker 构建中间层(/var/lib/docker)
- /root 或 /home/*:用户下载的镜像、备份包、解压未删的 tar.gz
确认某个目录异常后,继续下钻,例如:
du -sh /var/log/* 2>/dev/null | sort -hr | head -10
精准定位残留临时文件和缓存路径
对上一步锁定的目录,用 find + du 组合深挖:
- 查 /tmp 下大于 100MB 的孤立文件:
find /tmp -type f -size +100M -exec ls -lh {} \; - 查 /var/log 下 7 天前的普通日志(避开正在写的 syslog):
find /var/log -type f -name "*.log" -mtime +7 -ls - 查 /var/cache 各子目录真实大小:
du -sh /var/cache/* 2>/dev/null | sort -hr
注意:-mtime +7 指修改时间超过 7 天,不是创建时间;-ls 比 -print 多显示权限、大小、时间,方便判断是否为残留文件。
清理前必须验证,不能直接 rm -rf
列出路径只是第一步,动手前务必确认三点:
- 该路径是否被进程占用?运行 lsof +D /path/to/dir,若有输出说明文件正被使用,硬删不会立即释放空间
- 该文件是否可安全删除?比如 /var/cache/apt/archives/ 占几 GB 就是 apt clean 长期没跑;而 /var/log/journal/ 可用 journalctl --vacuum-size=200M 安全收缩
- 是否有备份或归档机制?例如 MySQL 备份目录需确认保留策略后再删旧文件
推荐优先使用安全清理命令:
Debian/Ubuntu:sudo apt clean、sudo apt autoclean
CentOS/RHEL:sudo yum clean all 或 sudo dnf clean all
日志清空(不删文件):sudo truncate -s0 /var/log/syslog











