没有更多磁盘空间:如何找到占用空间的内容?

没有更多磁盘空间:如何找到占用空间的内容?

我在一台运行 16.04 的服务器上遇到了一个问题:没有剩余磁盘空间。

我不知道是什么占用了空间。是否有命令可以列出当前目录的大小,以便我可以遍历并最终找到占用所有空间的目录?

答案1

与 Linux 中一样,完成这项工作的方法不止一种。但是,如果您需要从 CLI 执行此操作,这是我的首选方法:

我首先以 root 身份或使用 sudo 运行此命令:

du -cha --max-depth=1 / | grep -E "M|G"

grep 用于将返回的行限制为返回值在兆字节或千兆字节范围内的行。如果您的磁盘足够大,您还可以添加|T以包含太字节量。您可能会在、和/或上遇到一些错误,/proc因为/sys它们/dev不是磁盘上的真实文件。但是,它仍应为根目录中的其余目录提供有效的输出。找到最大的目录后,您可以在该目录中运行命令,以缩小查找罪魁祸首的范围。例如,如果/var是最大的,您可以按如下方式执行:

du -cha --max-depth=1 /var | grep -E "M|G"

这应该能让你找到问题儿童!

其他注意事项

虽然上述命令肯定能解决问题,但我在下面的评论中提出了一些建设性的批评,指出了一些您还可以包括的内容。

  1. 如果目录或文件的名称以大写字母 G 或 M 开头,则提供的Igrep可能会导致偶尔返回“K”值。如果您绝对不希望出现任何 K 值目录,则您需要提高正则表达式游戏的创造性和复杂性。例如grep -E "^[0-9\.]*[MG]"
  2. 如果您知道哪个驱动器存在问题,并且该驱动器上还安装了其他驱动器,而您又不想在搜索中浪费时间,则可以将该-x标志添加到du命令中。该标志的手册页描述:

      -x, --one-file-system
          skip directories on different file systems
    
  3. 您可以对命令的输出进行排序du,以便最高值位于底部。只需将其附加到命令末尾即可:| sort -h

答案2

你可以用ncdu这个。效果很好。

sudo apt install ncdu

在此处输入图片描述

答案3

我使用这个命令:

sudo du -aBM -d 1 . | sort -nr | head -20

有时,我需要从/目录运行它,因为我把某些东西放在了奇怪的位置。

答案4

如果您也不想使用命令,这里有一个应用程序:文件灯

它可以让您快速直观地了解任何文件夹中磁盘空间的使用情况。

在此处输入图片描述

相关内容