Linux中的临时目录在哪里?


63

Linux是否有一个通用的标准临时目录,例如Windows的C:\Temp文件夹?如果是这样,它在哪里?我发现了一个有关以tmp编程方式查找目录的问题,但我想提前在XML配置文件中设置临时位置。


1
我知道这似乎是一个非常简单的问题,但是我无法通过搜索找到清晰,简单的答案。我得到的许多结果都是针对特定于程序的临时目录/文件的。我确实看到了对的多个引用/tmp,但是对于这是Linux的标准还是只是一个通用约定,它们并不确定。
流行

5
Windows C:\Temp肯定不是标准的。Windows 95已经%TEMP%指向C:\WINDOWS\Temp
grawity 2011年

Answers:


91

文件系统层次标准 3.0版说:

/ tmp:临时文件

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

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

基本原理

IEEE标准POSIX.1-2008列出了与以上部分类似的要求。尽管/tmp可能以特定于站点的方式删除其中存储的数据,但是建议在/tmp每次引导系统时都删除其中的文件和目录。

FHS在历史上的先例和惯例的基础上添加了此建议,但由于系统管理不在本标准范围之内,因此没有要求。

/ var / tmp:系统重新引导之间保留的临时文件

/var/tmp目录可用于需要临时文件或在系统重新引导之间保留的目录的程序。因此,中的数据/var/tmp比中的数据更具持久性/tmp

/var/tmp引导系统时,不得删除其中的文件和目录。尽管/var/tmp通常以特定于站点的方式删除存储在其中的数据,但建议删除的间隔时间少于/tmp

另外,公开组基本规范问题7,环境变量提到了以下几点:

TMPDIR 该变量应表示目录的路径名,该目录可用于需要放置临时文件的地方的程序。


很难与标准争论。谢谢!
流行

11

这是一个古老的问题,因此今天还有另一种选择。依赖的Linux发行版systemd(占其中的90%)现在可以使用$XDG_RUNTIME_DIR目录(XDG基本目录规范)来存储某些类型的临时文件。它通常位于/run/user/$uid。这是具有700权限的每个用户目录,可提供更好的安全性。这是tmpfs提供性能的安装座。缺点tmpfs是只能用于保存小文件和套接字。

我将其视为/tmp和的结合/var/run


确定的技术自5年以来一直在进步
yass

10

是的/ tmp是通用的。请参见文件系统层次结构标准的此处此处

/ tmp /临时文件(另请参阅/ var / tmp)。在系统重新引导之间通常不保留。

PDF中列出了更多详细信息。


2

您不能提前选择一个适用于任何Linux系统的临时目录名称。实际上,您也无法在Windows上执行此操作。根据Wikipedia 关于临时文件夹文章,Windows上的临时目录由环境变量TEMP确定。如果您只是c:\Temp在将TEMP设置为其他名称的Windows系统上用作临时目录,则任何使用XML文件选择临时目录的程序都会失败。

简而言之,系统临时目录由我所知道的所有现代操作系统(包括Windows和任何类似UNIX的系统)上的环境确定。只要未更改默认值,就可以将单个静态路径设置为临时目录。

无论如何,典型Linux系统中的标准临时目录是/tmp。这相当于C:\Temp在这个意义上,它只是默认的临时目录,不具有普遍性。即使/tmp可用,即使用户(或系统)已设置TEMP环境变量,也应使用该变量的值。

您可以尝试选择一个相对于用户主目录的临时目录,您可以创建该目录。


就我而言,我认为这是一个安全的假设,即默认设置仍然存在,但是牢记这一点绝对不错。
流行

一些程序(例如bash,gcc,inkscape或lynx)使用TMPDIR环境变量。
Cristian Ciupitu 2011年

@Ryan,为什么/tmp主持临时变量?
佩里耶

0

最初的问题是:Linux是否具有标准的临时目录。如果是这样,它在哪里?可在以下位置找到tmp文件夹:文件系统/ tmp和文件系统/ var / tmp / tmp内容可以删除-如果您知道各种应用程序在“按需”上需要/不需要哪些文件/文件夹。基础。不需要的文件通常是由应用程序下载的文件,仅用于在那时简化应用程序本身,因此在应用程序执行后不再需要。/ var / tmp文件夹根本不应该被触摸。


1
该答案没有提供比接受的答案更多的信息,因此它毫无用处。
zx485
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.