磁盘空间不足时应先用df -h查看各分区使用率,再用du -sh --max-depth=1逐层定位大目录;注意inode耗尽、已删除但被进程占用的文件、跨文件系统统计干扰等问题,并采取truncate、清理缓存等安全清理措施。

磁盘空间不足时,别急着删文件。先用 df 看清全局,再用 du 锁定源头——这是最稳、最快、最不容易误操作的排查路径。
看整体:用 df 找出哪个分区真满了
执行 df -h,重点看 Use% 列和 Mounted on 列:
- 如果
/(根目录)使用率接近 100%,说明系统盘告急 - 如果
/var或/home单独爆满,问题就局限在该挂载点内 - 注意
tmpfs、devtmpfs这类内存文件系统,它们不占磁盘,不用管
加 -i 参数查 inode:若磁盘没满但提示“No space left on device”,大概率是小文件太多把 inode 耗尽了:df -ih
找源头:用 du 定位大目录和大文件
进入已满分区的挂载点(如 /),逐层缩小范围:
- 查一级子目录总占用:
du -sh --max-depth=1 / | sort -hr | head -n 10 - 进可疑目录(如
/var)再查:du -sh --max-depth=1 /var | sort -hr - 查单个目录总大小(不展开):
du -sh /var/log - 查大于 100MB 的普通文件:
find /var -type f -size +100M -exec ls -lh {} \; 2>/dev/null
警惕“删了还占空间”的假象
执行 df -h 和 du -sh / 结果相差很大?常见原因:
-
文件被删但进程还在写:用
lsof +L1查被删除却仍被占用的文件;找到对应 PID 后,重启服务或kill -HUP PID(谨慎操作) -
跨文件系统统计干扰:比如
/mnt/data是独立挂载盘,du /会把它也算进去;加-x限制只查当前文件系统:du -shx / -
软链接循环或权限不足跳过:加
--one-file-system或2>/dev/null避免报错中断
快速清理与预防建议
确认目标后,可安全操作:
- 清空日志:
truncate -s 0 /var/log/messages(比rm更安全,不破坏句柄) - 清理包管理缓存:
apt clean(Debian/Ubuntu)或yum clean all(RHEL/CentOS) - 删临时文件:
rm -rf /tmp/*(确保无关键进程依赖) - 设置 logrotate:避免日志无限增长,检查
/etc/logrotate.d/下配置
日常可装 ncdu 交互式分析:ncdu /,方向键浏览,d 删除,直观又可控。










