尝试更多地了解 Linux 以及为什么我们的磁盘空间总是满的。几乎没有 Linux 经验,所以请耐心等待

/dev/sda2 安装在 / 上,并且该磁盘一直处于满负荷状态

如果我更深入地检查,我就会发现

现在有这个18GB /

我如何才能看到实际占用了该空间的内容?我可以检查 /etc /home /var 等文件夹的内容,但无法看到 / 上直接有哪些文件

所有正常的文件夹(如缓存、日志或 /tmp)都经过检查并清空,但磁盘仍然占用 96%,我认为这是不正常的。

当然也欢迎任何其他建议。

提前致谢。

编辑

命令 ls -lst / 给出以下结果

我不确定该怎么理解,但这是否意味着“交换”占用了大部分空间?或者可以忽略它。

1

  • 很难确定;但 /swap 可能是您计算机内存的基于文件的交换。(您可以运行swapon查看)。如果它是您的计算机的交换空间;那是一个大小不会改变的静态文件;它的大小可能是您的 RAM 的倍数(1 倍、1.5 倍或 2 倍)。


    – 


最佳答案
3

如果您提供了产生这些结果的实际命令(似乎是 df 和 du),那将会很有帮助。

看起来好像 / 中使用了 18G。

那很糟。

您绝不应该在那里添加文件。这不仅会给管理存储带来问题,还意味着您正在运行数据处理任务或记录根。同样不好。

我如何才能看到到底是什么占用了这个空间?

ls -lst /将是一个很好的起点。

您将看不到已被删除(但仍处于打开状态)的文件。lsof | grep 'deleted'如果您没有看到您期望的内容,可能会有所帮助ls

1

  • 谢谢,我已经运行了您给出的第一个命令,并将输出添加到帖子中。您能帮我解释结果吗?因为我似乎从来没有加到正确的 18GB 使用量。


    – 


使用 ncdu 之类的工具来可视化您的磁盘空间使用情况。还有其他类似的工具,但这个工具无需 UI 即可运行,而且运行良好!

2

  • 3
    值得一提的是,已删除的文件将一直保留,直到被打开的进程关闭它们为止。


    – 

  • 确实,很有道理!


    – 

每当这种情况发生在我身上时,我都会进行手动递归,例如:

du -hs /* > /du.out

然后,当很明显膨胀来自(比如说)/var 时,我会重复该过程:

du -hs /var/* > /var/du.out

反复进行,直到深入到问题所在。

上述内容显然可以作为某种脚本进行改进;但一般来说,如果驱动器已满;那么您只为根保留了很小的空间,并且如果许多程序需要磁盘上的临时空间,它们将无法运行。