Linux 磁盘空间排查:正确使用 df、du 与大文件定位

从文件系统整体占用到目录和大文件定位,安全排查 Ubuntu 22.04 的磁盘空间问题。

适用环境:Ubuntu 22.04 LTS。执行清理操作前,请先确认路径和数据归属;不要因空间不足而直接删除不认识的系统目录。

df 看的是文件系统剩余空间,du 看的是目录内容占用。两者结合,能快速判断是哪个分区满了、又是哪个目录导致的。

第一步:确认哪个分区满了

1
df -hT

关注挂载点为 //home/boot 的行。Use% 接近 100% 时,先不要升级系统或安装大型软件包;这可能让包管理操作中断。

第二步:从大目录逐层缩小

1
2
sudo du -xhd1 / | sort -h
du -xhd1 "$HOME" | sort -h

-xdu 不跨越到其他挂载点,避免把 Windows NTFS 分区、移动硬盘等内容混在统计里。通常先检查 /var/home/usr;在 /var 下,日志、软件包缓存和容器数据经常占用较多空间。

继续深入某个目录时,替换路径即可:

1
sudo du -xhd1 /var | sort -h

第三步:定位异常大文件

1
sudo find /var -xdev -type f -size +1G -printf '%10s %p\n' | sort -n

看到大文件后,先判断它是否为日志、下载缓存、虚拟机磁盘或数据库文件。对日志可使用 journalctl --disk-usage 查看 systemd 日志占用;不要直接删除正在写入的日志文件。

一个容易忽略的差异

df 显示空间已满而 du 找不到对应内容,可能是进程仍打开着一个“已删除文件”。可用下面命令排查:

1
sudo lsof +L1

确认对应服务后,以正常方式重启服务或系统,才会释放这部分空间。

出处

本文将原始命令按“整体—目录—文件—异常占用”的排查顺序重新组织。