为什么“df”和“du”命令显示不同的磁盘使用情况?

为什么“df”和“du”命令显示不同的磁盘使用情况?

我无法在我的电脑上访问 ubuntu 系统,错误消息:“系统正在低图形模式下运行“我尝试了一些从互联网上搜索到的命令。

我发现一个问题,似乎没有可用的磁盘空间。我使用“自由度“ 和 ””命令检查,结果如下:

du -j --max-depth=1
23G  ./home
3.3G ./usr 
...... 
28G

df -Th 
filesystem   Type   size    used   available   use%    mounted on 
/dev/sda5    ext4   68G     68G    0           100%    /

我该如何清理系统以获取更多的磁盘空间?

答案1

您很可能知道,您可以删除某个应用程序仍在使用的文件,而对于该应用程序来说,该文件仍然可用。这是因为 /proc/ 文件系统中的文件描述符保持打开状态。

因此,如果存在指向已被删除的文件的此类打开描述符,则它们占用的空间将被视为已被使用df(并且是正确的),但由于不再有与它们关联的文件名,因此df无法将它们考虑在内。du

您可以使用以下命令查找所有未链接但保持打开的文件:

# lsof | grep '(deleted)'

答案2

我怎样才能删除链接? – Vikas Hardia 2014 年 8 月 22 日 5:46

您必须找到持有文件句柄的进程。使用 Dmitry Alexandrov 的命令,您可以在那里看到进程和 pid。在我们的例子中,“旧” varnish 日志文件是空间杀手。

# lsof | grep '(deleted)'
[...]
varnishlo 13978       varnishlog    3w      REG              252,1 318448027646    5926973 /var/log/varnish/varnish.log.1 (deleted)
apache2   16801         www-data    2w      REG              252,1        64550   13110120 /var/log/apache2/error.log.1 (deleted)
[...]
# service varnishlog stop
[or if there is no service script]
# kill -11 13978 (the second number of the lsof command is the pid)
[or may be] 
# kill -9 13978

如果它是计算机中的守护程序或其他服务,请不要忘记重新启动服务或进程。如果可以,只需重新启动计算机即可 ;)

答案3

好的,让我们检查一下手册页:

df-报告文件系统磁盘空间使用情况

估计文件空间使用情况

这两个工具的目的不同。一个df是显示文件系统使用情况,du另一个是报告文件空间使用情况。另一个du是从文件开始工作,而另一个是df在文件系统级别工作,报告内核所说的可用内容。继续阅读du手册页支持这一点:

汇总每个磁盘使用情况文件,以递归方式查找目录。

它说du可以与文件一起使用。

df显示可用的磁盘空间量文件系统包含每个文件名参数。如果没有给出文件名,则显示所有当前安装的文件系统上的可用空间。

这里说的df不是文件而是文件系统本身。

答案4

简单来说:

您运行时du没有 root 权限。因此无法检查、等文件夹中的可用/proc空间/mnt

df分别显示总使用空间和可用空间。

因此当您检查Linux根文件系统时,请以该du报告为最终报告。

相关内容