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


26

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

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

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%    /

如何清理系统以获得更多磁盘空间?


标题和问题正文末尾的问题完全不同。一些答案与一个问题有关,而另一些与另一个问题有关。您应该阐明您的实际需求,并可能也接受答案。
Melebius

Answers:


50

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

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

您可以通过以下方式找到所有未链接但已保留的打开文件:

# lsof | grep '(deleted)'

7
这救了我。不知道为什么我的磁盘已满,但是du说它是空的。8GB文件的打开文件句柄
Cheyne

5
如何删除链接?
维卡斯·哈迪亚

1
有时您需要以root用户身份执行此命令,以查看已删除的文件被其他用户的进程打开。
Envek '16

1
对我来说,这的根本原因是其中一个文件中的日志文件规范不正确/etc/logrotate.d。错误的条目缺少后旋转例程,这导致我的守护进程无法释放其旋转/删除的文件。
戴尔·安德森

如何删除那些未链接但打开的文件?
zx1986 '18

14

如何删除链接?–维卡斯·哈迪亚(Vikas Hardia)'2014年8月22日5:46

您必须找到保存文件句柄的过程。使用Dmitry Alexandrov的命令,您将看到进程和pid。在我们的案例中,“旧”清漆日志文件是空间杀手。

# 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

如果它是计算机上的恶魔或其他服务,请不要忘记再次启动该服务或过程。如果可以,只需重新启动计算机;)


9

好,让我们检查手册页:

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

du- 估计文件空间使用量

这两个工具是为不同的建议而设计的。虽然df用于显示文件系统使用情况,但是du用于报告文件空间使用情况。du从文件df工作,而在文件系统级别工作,报告内核所说的可用内容。继续阅读手册du页支持此:

递归地汇总每个FILE的磁盘使用情况。

它说du可以使用文件。

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

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


可以使用-x字符修改du用法,以告诉它仅计算给定文件系统上的文件。
macetw

1

简单地说:

du没有root权限即可运行。因此,它是不能够检查可用空间/proc/mnt等等,文件夹。

df 显示总的已用和可用空间。

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


0
df

总结可用磁盘空间

它显示可用磁盘空间量。

du

总结磁盘使用情况。

它显示已使用的磁盘空间量。


是的,但结果为“ df -Th”,表明已使用68G。今天早晨,当我尝试访问ubuntu系统时,它仍然显示“系统正在以低图形模式运行”消息,但是当我检查内存使用情况时,“ df”和“ du”命令显示出合理的结果。但是“低图形模式”有什么问题?
user2068965 2013年

看看This
米奇

0

没什么让人困惑的:这是外观:=

1)du ==磁盘使用率
这些文件正在使用多少磁盘空间?

2)df ==
可用磁盘我们有多少可用磁盘空间?

同样对于系统在低图形模式下运行' here '


0

我做了
sudo du -hxa / | egrep '^[[:digit:]]{1,1}G[[:space:]]*'

它正好解决了我所看到的21GB的巨大差异!
有问题的文件是/ swap文件,如果是21GB!

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.