我们应该手动删除/tmp的内容吗?

IMB*_*IMB 27 linux centos performance operating-systems temporary-files

我的印象是“旧”文件/tmp会被定期删除。但是,在我看来,它/tmp会随心所欲地增长,并且不会删除任何内容。有人说最好不要/tmp管它,只有在磁盘已满时才删除其内容。

我的问题是,/tmp真的是为了不照顾自己而设计的吗?最佳做法是什么?

tra*_*cki 29

回答问题:

  • /tmp应该被自动清空:是的
  • 我们是否应该/tmp定期手动删除文件:您的系统会处理它们。

如果你问自己:

  • 我可以/tmp出于任何原因删除文件吗(需要空间,想要删除痕迹等):这取决于请继续阅读

文件系统层次结构标准 (FHS)指出

/tmp 目录必须可供需要临时文件的程序使用。

程序不得假定 /tmp 中的任何文件或目录在程序调用之间都保留了下来。

/var/tmp/类似的目的,但不能在重启时删除。

不保证/tmp//var/tmp/定期进行清理。这可能取决于您的发行版和设置,尽管大多数系统会不时进行一些清理。见注释通过mike

如果您需要删除/tmp 中的文件,请先查看该文件是否正在使用中。你可以很容易地做到这一点:

lsof /tmp/file_to_delete
Run Code Online (Sandbox Code Playgroud)

如果您有权这样做,这将显示持有该文件句柄的进程,例如进程名称、PID 和文件类型。要真正显示所有进程,请sudoroot用户身份添加或运行。

lsof +D /tmp
Run Code Online (Sandbox Code Playgroud)

将向您显示当前打开的/tmp( +D) 中的所有文件和目录。当然,您不应该删除这些文件。

事实上,当你删除一个仍然打开的文件时——如果你有这样做的权利——它变得无法从文件系统命名空间访问,但对于具有打开文件句柄的进程来说它仍然存在。关闭该句柄后,该进程将无法再访问该文件,如果没有进程再打开该文件,则最终将其删除。一个进程不应该假设文件在后续open调用之间存活,但程序员马虎,你永远不知道。出于这个原因,删除某些程序仍在使用的文件并不是那么聪明