如何清理 /tmp?

如何清理 /tmp?
rizhas@rizhas-laptop:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda7        67G   58G  5,2G  92% /
none            4,0K     0  4,0K   0% /sys/fs/cgroup
udev            1,5G   12K  1,5G   1% /dev
tmpfs           303M  1,2M  302M   1% /run
none            5,0M     0  5,0M   0% /run/lock
none            1,5G  348K  1,5G   1% /run/shm
none            100M   80K  100M   1% /run/user
overflow        1,0M  1,0M     0 100% /tmp
overflow        1,0M  1,0M     0 100% /tmp

如何清理/tmp

答案1

/tmp 应该在重启时清理,但是如果你不重启(这对于服务器来说很正常),清理就不会发生

find /tmp -ctime +10 -exec rm -rf {} +

将删除所有超过 10 天的文件和文件夹。您可能希望将其添加到每日 cron 中。


更新

在下面的评论中,@sfussenegger 建议使用略有不同的命令格式,这可能更适合您的需求和您正在操作的系统。

sudo find /tmp -type f -atime +10 -delete

此处的命令用于sudo确保所有内容都被删除(或者你可以以 root 身份运行它),对尚未被删除的文件进行操作访问超过 10 天,并且只删除文件,而不是文件夹。它还用于-delete避免执行rm命令

答案2

您可以假设 tmp 目录(/tmp/ /usr/tmp 等)内的任何内容都可以删除。在开始删除之前,请停止您正在使用的所有程序和服务,因为程序可以使用 /tmp/ 来临时存储该会话的信息。如果您正在运行 mysql 和/或 apache,请执行此操作。/tmp/sudo service mysql stop目录sudo service apache2 stop中文件的名称大多数时候都会提示它们属于哪个程序。

因此从命令行...

cd /tmp/
pwd
sudo rm -r *

将清空 /tmp/ 目录并删除所有文件和子目录。请注意正确输入。pwd其中的命令不是必需的,但应该显示/tmp

如果您想要以交互方式进行(因此您需要确认删除):

cd /tmp/
sudo rm -ri *

还值得注意的是,重新启动也会清除 /tmp,如下所示:/tmp 目录是如何清理的?因此,如果重启后 /tmp/ 中充满了文件,您需要调查这些文件的来源。

我还想说的是,/tmp 的 1 Mb 空间并不大。您使用 MySQL 吗?请参阅https://unix.stackexchange.com/a/76058/10017关于如何修复此问题(感谢@drc)

答案3

tmpreaper程序可用于清理/tmp定期删除。此程序会删除在给定时间范围内(通常为两周)未访问的所有内容。要使此功能正常工作,它所在的文件系统应启用该atimes选项。如果您使用临时文件,看起来你正在这样做,那么你应该没问题。

当然,重启也会清除/tmp,但那样就太无聊了。

答案4

运行类似 的命令之前请务必小心rm -r ./*。一旦运行该命令,将很难甚至不可能恢复任何数据。

全部都将被移除。确保您要删除的目录是正确的。

有更安全的方法来处理事情。

# sudo rm -r /tmp/*

这样,当您意外地从 shell 内部运行此命令时history,它就不会删除错误的文件(除非您将它们保存在/tmp)。

相关内容