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


8

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

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

上下文: /tmp已安装在其自己的文件系统上。我在VPS帐户上使用Ubuntu 12.04服务器版本。由于这个问题,/tmp根据df某些程序的100%利用率抱怨的可用空间/tmp

Answers:


10

du 通过扫描可到达的索引节点并计算其大小来报告可用空间。

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

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

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


1

根文件系统上的某些文件可以隐藏在安装点后面。如果没有安装相应的设备,则可以在安装点下创建文件,而当再次安装设备时,du命令不会对文件计数。du和df结果之间有很大差异时,这很可能是一个问题。


答对了。这就是我的原因。
jdhildeb

-1

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.