为什么 df 和 du 显示不同的输出?

为什么 df 和 du 显示不同的输出?

当我执行命令时df -h /tmp它说磁盘利用率是 100%,但当它尝试时du -sh /tmp它说磁盘利用率为 2%

我想知道为什么这些命令显示不同的输出,这两个命令如何工作以及这个问题的解决方案是什么。

语境: /tmp安装在自己的文件系统上。我在我的 VPS 帐户上使用 Ubuntu 12.04 服务器版本。由于这个问题,/tmp根据df一些程序的说法,使用率为 100%,抱怨可用空间不足/tmp

答案1

du通过扫描可达的 inode 并计算其大小来报告可用空间。

如果在文件仍然打开时创建、打开并在随后删除它,则打开该文件的程序将继续访问该文件,并且可以对磁盘上的该内存位置执行写入和读取操作。du不考虑此类打开的文件,而df考虑。

简单的重启应该可以刷新 /tmp 并解决您的问题。

另一种方法是扫描打开的文件并重新启动或终止未释放已删除文件的进程。

答案2

根文件系统上的某些文件可能隐藏在挂载点后面。当未挂载相应设备时,可能会在挂载点下创建文件,而当再次挂载设备时,du 命令不会对文件进行计数。当 du 和 df 结果之间存在很大差异时,很可能会出现此问题。

答案3

sudo运行时请确保du。例如,如果您运行du -hs /*,除非添加,否则您将看不到实际的磁盘使用情况sudo

相关内容