当前位置: 首页>>技术教程>>正文


如何清理/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

最佳解决方案

/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 stopsudo 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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1710.html,未经允许,请勿转载。