我如何找出系统上占用空间的内容

我如何找出系统上占用空间的内容

我试图找出哪些文件/文件夹占用了文件系统上最多的空间

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        94G   85G  4.4G  96% /
tmpfs            16G  7.9G  7.9G  50% /dev/shm
/dev/sda1       477M   82M  370M  19% /boot

我安装是ncdu为了查看什么占用了空间,但我仍然找不到什么占用了大部分空间

1.9 GiB [##        ] /var
    1.2 GiB [#         ] /usr
  372.8 MiB [          ] /lib
  129.7 MiB [          ] /tmp
   79.3 MiB [          ] /boot
   74.8 MiB [          ] /root
   28.6 MiB [          ] /etc
   18.4 MiB [          ] /lib64
   18.1 MiB [          ] /opt
   10.8 MiB [          ] /sbin

编辑

在发布此线程之前,我确实删除了一些大日志文件。我发现很奇怪,它在 上显示出很大的差异df -h。在 @Pavel Šimerda 建议我进行了软重启,这是输出

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        94G  3.9G   85G   5% /
tmpfs            16G  236M   16G   2% /dev/shm
/dev/sda1       477M   86M  366M  20% /boot

在这种情况下为什么需要重新启动?

答案1

其他答案中提到的所有工具的工作方式基本相同,只是演示方式有所不同。我最喜欢的是ncdu那些日子,du当前者不可用时我会使用它。所以现在的问题是为什么总已使用空间远大于磁盘上所有文件的总和以及重新启动如何影响这种情况。

首先你应该知道全部的,用过的可用的磁盘上的空间只是一个估计值。但这种差异不能仅仅用不准确来解释。

这里的关键事实是并非所有存储在文件系统中的文件都可以通过文件系统树看到。当程序打开一个文件时,它会引用该文件并且无法删除该文件。当由于任何原因从树中删除文件时,只要程序保留引用,它就会保留在文件系统中。

你可以列出已删除的打开文件使用以下命令检查系统中的哪些进程保存已删除的文件以及这些文件有多大。

lsof -n | grep '(deleted)'

重新启动后,您将从干净的状态开始,并且有问题的进程可能尚未将如此多的数据输入到已删除的文件中。

使用统计信息的详细信息因文件系统格式而异。

答案2

如果您不介意运行 GUI,请安装并运行baobab,然后单击要分析的硬盘驱动器。

答案3

ncdu通常报告正确。sudo使用的时候你用过吗?

此外,您可以检查是否有根保留的块。通常,总空间的 5% 是由 root 保留的,但在您的情况下,它似乎是一个很大的空间。无论如何,要检查有多少保留块,请发出以下命令:

sudo tune2fs -l /dev/sda5 | grep "Block count\|Reserved block count"

然后,您可以通过将“保留块计数”与总“块计数”进行比较来找出百分比。

答案4

尝试运行这个:

du -ha --max-depth 1 2>/dev/null | sort -hr

它将以人类可读的格式打印当前目录中的所有文件和目录,并按降序排序。

我认为在考虑命令行工具时这是最具可读性的选项。

相关内容