先用df查看分区使用情况,再用du定位大目录。df显示磁盘整体使用率,du统计文件实际占用;二者不一致时可能因删除未释放句柄、隐藏挂载或权限问题,需用lsof、root权限及mount命令排查。

在Linux系统中,查看磁盘使用情况是日常运维的重要任务。常用的两个命令是 df 和 du,它们功能不同但常被结合使用来分析存储空间。
df:查看文件系统的整体磁盘使用情况
df(disk free)命令用于显示当前挂载文件系统的磁盘容量、已用空间、可用空间及使用百分比。
常用选项:
- df -h:以人类可读的方式(如 KB、MB、GB)显示结果
- df -T:显示文件系统类型(如 ext4、xfs)
- df -i:查看 inode 使用情况,排查“磁盘满但无大文件”的问题
例如执行 df -h 输出可能如下:
Filesystem Size Used Avail Use% Mounted on /dev/sda1 50G 20G 28G 42% / tmpfs 3.2G 0 3.2G 0% /dev/shm
重点关注 Use% 列,判断分区是否接近满载。
du:查看文件或目录的磁盘占用大小
du(disk usage)命令用于统计指定文件或目录所占空间的实际大小。
常用选项:
- du -h:以易读格式显示目录大小
- du -sh /path:快速查看某个目录的总大小(-s 表示汇总)
- du -ah /path:列出路径下所有文件和子目录的大小(-a 显示所有项)
- du --max-depth=1 /path:限制层级深度,便于定位大目录
比如查找哪个目录占用了最多空间:
du --max-depth=1 /home | sort -hr
该命令会列出 /home 下各子目录大小,并按从大到小排序,帮助快速定位问题目录。
df 与 du 结果不一致的原因分析
有时会出现 df 显示磁盘使用率很高,但 du 统计总和却远小于该值的情况。常见原因包括:
- 被删除但仍被进程占用的文件:这类文件已 unlink,但句柄未释放,空间未归还
- 隐藏挂载点:如在一个非空目录上挂载新文件系统,原数据被掩盖但实际仍存在
- 权限限制:普通用户无法访问某些目录,导致 du 漏统计
排查方法:
- 使用 lsof +L1 查找已被删除但仍在占用空间的文件
- 切换到 root 用户运行 du,避免权限遗漏
- 检查是否存在多层挂载,使用 mount 或 findmnt 确认挂载结构
实用技巧与建议
结合 df 和 du 可高效完成磁盘分析:
- 先用 df -h 确定哪个分区紧张
- 再进入对应挂载点,用 du -sh * 扫描大目录
- 对可疑目录逐层深入,直到定位具体文件
- 定期清理日志、缓存或临时文件,避免空间耗尽
也可配合其他命令提升效率,例如:
du -h /var/log | grep G
查找大于 GB 的日志目录。
基本上就这些。掌握 df 和 du 的差异与配合使用方式,能快速诊断 Linux 系统中的磁盘空间问题。不复杂但容易忽略细节,尤其是句柄未释放这类陷阱。










