Linux 中的临时目录在哪里?

Linux 中的临时目录在哪里?

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

答案1

文件系统层次标准3.0 版表示:

1.4. /tmp :临时文件

/tmp必须为需要临时文件的程序提供该目录。

程序不能假设在/tmp程序调用之间任何文件或目录都会被保留。

基本原理

IEEE 标准 POSIX.1-2008 列出了与上一节类似的要求。尽管存储在 中的数据/tmp可能会以站点特定的方式删除,但建议/tmp在系统启动时删除位于 中的文件和目录。

FHS 根据历史先例和常见做法增加了此建议,但并未将其作为要求,因为系统管理不属于本标准的范围。

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

/var/tmp目录可供需要在系统重启之间保留的临时文件或目录的程序使用。因此,存储在 中的/var/tmp数据比 中的数据更持久/tmp

/var/tmp系统启动时不得删除中的文件和目录。尽管 中的数据/var/tmp通常以站点特定的方式删除,但建议删除频率低于/tmp

此外开放群组基础规范第 7 期,环境变量提到以下内容:

TMPDIR 此变量应表示为需要位置来创建临时文件的程序提供的目录的路径名。

systemd对此也有发言权:

/tmp//var/tmp/Linux 系统为临时文件提供了两个可供所有人写入的目录。前者通常位于临时文件因此由 RAM/swap 支持,并在每次重启时刷新。后者通常是一个适当的持久文件系统,因此由物理存储支持。这意味着:

  1. /tmp/只应用于较小、大小受限的文件;/var/tmp/应用于其他所有内容。

  2. 在启动周期内应保留的数据不应放置在 中/tmp/

如果$TMPDIR设置了环境变量,则使用该路径,而不要直接使用/tmp/nor /var/tmp/

文件层次结构(7)了解有关 Linux 系统这两个(以及大多数其他)目录的详细信息。

可以使用以下方式查询路径systemd 路径

$ systemd-path temporary
/tmp
$ systemd-path temporary-large
/var/tmp

FreeBSD网络BSDOpenBSD蜻蜓此处(7)请参阅手册页。

答案2

这是一个老问题,所以今天有另一个选择。依赖的 Linux 发行版systemd(占 90%)现在可以使用$XDG_RUNTIME_DIR目录 (XDG 基础目录规范)来存储某些类型的临时文件。它通常位于/run/user/$uid

  • 这是每个用户的目录700- 保持文件私密
  • 这是一个tmpfs性能卓越的支架(又名 RAM 驱动器)
  • 它会自动清理

缺点tmpfs是它只能用于存储小文件(PID 文件、锁文件、套接字等)。

答案3

是的 /tmp 是供一般用途的。请参阅这里这里关于文件系统层次标准。

/tmp/ 临时文件(另请参阅 /var/tmp)。系统重启后通常不会保留。

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

答案4

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

相关内容