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