Linux中的/ tmp能填满吗?

时间:2009-02-11 15:54:37

标签: linux

我将/ tmp中的一些文件放在网络服务器上,Web应用程序在有限的时间内使用这些文件。如果文件在用户退出使用应用程序之后留在服务器的/ tmp中并且这种情况反复发生,那么我是否应该关注目录填满?我在网上看到重新启动会清除/ tmp目录,但是这个框不会重新启动。

汤姆

8 个答案:

答案 0 :(得分:17)

是的,它会填满。考虑实现一段时间后删除旧文件的cron作业。

这样的事情可以解决问题:

/usr/bin/find /tmp/mydata -type f -atime +1 -exec rm -f {} \;

这将删除修改时间超过一天的文件。

或者作为crontab条目:

   # run five minutes after midnight, every day
   5 0 * * *       /usr/bin/find /tmp/mydata -type f -atime +1 -exec rm -f {} \;

其中/ tmp / mydata是应用程序存储其临时文件的子目录。 (简单地删除/ tmp下的旧文件将是一个非常糟糕的主意,正如其他人在此指出的那样。)

查看crontab并查找手册页以获取详细信息。如果不了解所有细节,就不要运行删除文件系统上文件的脚本 - 这就是优质服务器的糟糕状况。 :)

当然,如果您可以修改应用程序以删除临时文件,那么这通常是一个更好的解决方案。

答案 1 :(得分:5)

你可以写的唯一不用担心的就是 / dev / null 。如果你继续倾倒东西,其他一切最终都会耗尽空间。

一个简单的方法是让一个cron作业清理所有你的 / tmp 文件,这些文件早于几天。

答案 2 :(得分:4)

是的,它会链接到您的某个磁盘/分区,并且可以填满。 它会在重新启动时被删除。

当用户退出应用程序时,您应该清理文件。

答案 3 :(得分:3)

您不能盲目地删除在一段时间内未被修改的所有内容。很多程序都在那里存储套接字,它们永远不会被修改,但仍然是程序工作中不可或缺的一部分。以我的一台服务器为例:

srwxrwxrwx    1 mysql    mysql           0 Sep 11 04:01 mysql.sock=

这是/ tmp中有效的,有效的“文件”。它只是看起来很旧,因为mysql有一段时间没有重新启动。使用'-type f'或'-atime'限制您的查找,或使用其他人提到的发行版提供的工具之一。

答案 4 :(得分:1)

您的网络应用程序使用哪种语言?很多语言都提出临时文件:

如果有这样的功能,请用您的语言搜索。

答案 5 :(得分:0)

有些Linux发行版有一个包可以清理/ tmp中的旧文件。如上所述,实现自己并不难。需要注意的一件事是长时间运行的过程,尤其是“僵尸”,这些过程已经死亡,但尚未完成清理。如果一个进程打开了一个文件,只需从/ tmp中删除它就不会实际回收它的空间 - 你必须终止进程或以某种方式强制它关闭文件。许多编写日志或临时文件的程序都是为了捕获信号(通常是SIGUSR1)而关闭并重新打开任何日志或临时文件。

答案 6 :(得分:0)

许多Linux发行版都包含一些名为“tmpwatch”的东西,或类似的东西,它通过cron运行并删除预定义渐变上的内容。有些人足够聪明,可以通过文件的所有者访问..守护程序用户拥有的东西比普通用户拥有的东西更快地被清除。查看邮件列表,查找您选择的发行版。

尽管如此,你应该让SNMP或其他类型的监视器观察有多少可用空间,如果填满像Apache这样的服务不会很开心。例如,PHP的电子加速器需要足够的空间,有些邮件扫描仪不能正常清理等等。

答案 7 :(得分:0)

只是警告:并非所有Linux安装都会在每次重启后清理/ tmp目录