我遇到了以下问题:
分区的/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]"
等等。
请重点检查最近修改的输出并检查是否发现任何异常内容。
您可能需要继续监控并注意大小变化,直到分区几乎已满。然后,您将更好地了解导致此问题的原因,并能够做出决定。