Ubuntu 18.04 服务器分区随机变满

Ubuntu 18.04 服务器分区随机变满

我遇到了以下问题:

分区的/dev/sda1使用率随机达到 90% 或 100%。正常情况下是 47% 和 50%,但我不明白为什么有时会跳升到 100%。

Filesystem      Size  Used Avail Use% Mounted on
udev            3.9G     0  3.9G   0% /dev
tmpfs           796M  692K  795M   1% /run
/dev/sda1        29G   14G   16G  48% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda15      105M  3.6M  101M   4% /boot/efi
tmpfs           796M     0  796M   0% /run/user/1000

这种情况每周末至少发生一次。我的解决方案是从命令行键入 重新启动操作系统reboot,但这对服务器来说并不健康。

这可能是什么原因呢?

答案1

符合您描述的一件事是:

您的/tmp目录被服务器上运行的应用程序占用并变满。/tmp重新启动后目录将被清空...因此分区大小减小。

要检查目录的使用情况/tmp,请在终端中运行以下命令:

sudo du -hsc /tmp

/tmp要实时查看目录的使用情况,请在终端中运行以下命令:

sudo watch du -hsc /tmp

要退出实时,请按Ctrl+ C


清空/tmp目录而不重新启动,请在终端中运行以下命令:

sudo rm -rf /tmp/{*,.??*}

如果您收到类似这样的错误bash: /usr/bin/sudo: Argument list too long,则意味着您的/tmp目录包含的文件数量超出rm了一次可以处理的范围。要解决此问题,请在终端中运行以下命令:

sudo find /tmp/{*,.??*} -exec rm -rf {} \;

如果在此操作过程中出现类似错误No such file or directory.,请忽略它们,因为系统会一直在/tmp目录中添加和删除文件。


如果这解决了您的问题:

您可以添加一个 cronjob 来每天运行空命令。


如果不是这样:

我建议您通过在终端中运行以下命令来调查是什么占用了您的空间:

sudo du -hca --time / | grep -E "^[0-9\.]*[G]"

这将列出系统上所有大小超过 1G 的目录和文件及其修改日期。

要检查某些尺寸:

例如列出仅有的目录3G尺寸,请使用以下命令:

sudo du -hca --time / | grep -E "^[3][0-9\.]*[G]"

您可以更改数字 [3] 来检查大小为 5G 的目录,如下所示:

sudo du -hca --time / | grep -E "^[5][0-9\.]*[G]"

等等。

请重点检查最近修改的输出并检查是否发现任何异常内容。

您可能需要继续监控并注意大小变化,直到分区几乎已满。然后,您将更好地了解导致此问题的原因,并能够做出决定。

相关内容