问题描述
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
?
最佳解决方案
/tmp应该在重启时清理,但如果你不重启(这对服务器来说是正常的),清理不会发生
find /tmp -ctime +10 -exec rm -rf {} +
将删除超过10天的所有文件和文件夹。你可能想把它添加到每日cron。
UPDATE
在下面的评论中@sfussenegger建议使用稍微不同的此命令格式,它可能更适合您的需要和您正在操作的系统。
sudo find /tmp -type f -atime +10 -delete
此命令使用sudo
确保删除所有内容(或者您可以以root身份运行),对未访问超过10天的文件进行操作,只删除文件,而不删除文件夹。它还使用-delete
来避免执行rm
命令
次佳解决方案
您可以假设可以删除tmp目录(/tmp //usr /tmp等)中的任何内容。在开始删除之前,停止所有正在使用的程序和服务,因为/tmp /可以被程序用来临时存储该会话的信息。如果你运行了mysql和/或apache,那么做一个sudo service mysql stop
和sudo service apache2 stop
。 /tmp /目录中文件的名称大多数时候都提供了他们所属程序的线索。
所以从命令行……
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)
第三种解决方案
tmpreaper
程序可用于定期清理/tmp。该程序删除在给定时间范围内未访问过的所有内容,通常为两周。为使其正常工作,它所在的文件系统应启用atimes
选项。如果你使用tmpfs,你看起来正在做,那么你应该没问题。
当然,重启也会清除/tmp,但那会很无聊。
第四种方案
目录/tmp
表示临时。
该目录存储临时数据。您无需从中删除任何内容,每次重新启动后,其中包含的数据都会自动删除。
如果你想删除它中存在的数据仍然使用
sudo rm -r /tmp/*
从中删除不会导致任何问题,因为这些是临时文件。
第五种方案
在运行rm -r ./*
之类的命令之前要小心。一旦运行它,将很难或不可能恢复任何数据。
一切都将被删除。确保要删除的目录是正确的。
处理事情有一种更安全的方法。
# sudo rm -r /tmp/*
这样,当您从shell history
中意外运行此命令时,它不会删除错误的文件(除非您将它们保存在/tmp
中)。
第六种方案
默认情况下,每次启动时都会清除/tmp
目录,因为TMPTIME
默认为0
。
参考资料