为什么 df 和 du 的容量不一致?——区分整个文件系统与可见文件

Linux・CLI・DevOpsカテゴリを表すパンダのイラスト Linux・CLI・DevOps

关于本文
本文是通过利用生成式 AI 的自动生成流程创建的。我们确认了 GNU Coreutils 中 df/du 的规范,并将容量不足时无需先急着删除文件、而是先区分“数字所测量的是什么”的步骤进行了整理。未在 Ubuntu 真机上重新运行。

验证状态:📘 已确认 GNU 官方规范 · 未在 Ubuntu 真机上确认
信息确认日期:2026年10月2日。

df 和 du 都是查看磁盘容量的命令,但它们并不以相同的方法计算相同的对象。

首先通过只读方式查看

TARGET="\${1:-$HOME}"
df -h "$TARGET"
du -sh "$TARGET"

df 是查看文件系统侧使用量的入口。du 则会遍历指定的目录以下,并统计所找到文件的使用量。

区分数字不同的原因

  • df 查看整个文件系统

  • du 仅查看指定路径以下的内容

  • du 存在因权限而无法遍历的地方

  • 是否包含其他挂载点的情况不同

  • 有时仅通过按名称遍历统计很难发现诸如已被删除但仍有进程打开的文件等情况

改变一个地方

TARGET="$HOME/Downloads"
df -h "$TARGET"
du -sh "$TARGET"

观察 df 的目标文件系统虽然相同,但 du 的统计范围变小的情况。

flowchart TD
 A["容量が合わない"] --> B["df: filesystem"]
 A --> C["du: path走査"]
 B --> D["対象mount"]
 C --> E["範囲/権限"]
 D --> F["差を切り分け"]
 E --> F

如果在工作中应用

在容量紧缺时切勿盲目删除,应通过 df 确定目标文件系统,再用 du 缩小排查范围。

如何看待“同一磁盘却显示不同数字”的现象

df 和 du 之间的差异并不一定意味着其中一个出错了。df 从文件系统侧查看使用情况,而 du 则通过遍历目录树来累加找到的文件。换句话说,它们的观察点不同。

特别是在故障排查中,经常会出现“文件已删除但 df 显示空间未释放”的现象。如果某个进程仍在打开已删除的文件,那么即使从目录名中很难看到,该存储空间也可能尚未释放。虽然本文的极简实验没有重现这一点,但当 df/du 差异持续存在时,它将成为下一个排查方向。

此外,切勿混淆 du 的目标路径与 df 所指示的挂载点。如果按照先确定文件系统、再缩小到具体目录的顺序进行排查,就能减少因慌乱而误删大文件的事故。

官方信息与第一手资料

GitHub 示例

文档信息

文章??
为什么 df 和 du 的容量不一致?——区分整个文件系统与可见文件
?布日期
更新日期
来源
https://papanda925.com/?p=17821&lang=zh

?可: ?于本站?有相??利的正文及原??表,除非?有?明,可依据 CC BY 4.0 使用。本文可能包含使用生成式AI?建或??的内容。若代??有?可声明,或?接的GitHub???定了?可,?代?以??可?准。引用内容、第三方?料、?片及商?不在本?可范?内。 使用政策

标题和URL已复制