/tmp 和 /var/tmp 有什么区别?

Wes*_*ley 159 fhs directory-structure tmp

在大多数FHS系统上,有一个/tmp文件夹和一个/var/tmp文件夹。两者之间的功能区别是什么?

Nil*_*ils 145

/tmp意味着寿命短的快速(可能很小)存储。许多系统清理/tmp速度非常快——在某些系统上,它甚至被安装为 RAM 磁盘。/var/tmp通常位于物理磁盘上,较大并且可以保存较长时间的临时文件。一些系统也干净/var/tmp,但频率较低。

另请注意,/var/tmp在早期引导过程中可能不可用,因为/var和/或/var/tmp可能是挂载点。因此它有点类似于/bin和之间的差异/usr/bin。第一个在早期启动期间可用 - 后者在系统安装完所有内容后可用。所以大多数引导脚本将使用/tmp而不是/var/tmp用于临时文件。

Linux 上用于临时文件的另一个(即将到来的)位置是/dev/shm.

  • 我觉得现在`/bin` 和`/usr/bin` 实际上是一样的(符号链接)有点讽刺。;-) (5认同)
  • @Felix 还没有在所有发行版上。但是 Linux 正在朝那个方向发展。可能是因为磁盘变得越来越大。 (3认同)

njs*_*jsg 34

/tmp可能会,有时会在重新启动时清除。/var/tmp在重新启动之间保留。

请参阅有关 FHS 的维基百科文章

  • */tmp* 甚至可以在进程退出后立即清除进程创建的文件! (2认同)

osv*_*ein 22

/tmp上的 POSIX 基本规范,第 7 期

以下目录应存在于符合要求的系统上,并应按说明使用:

/tmp

一个目录,可供需要一个位置来创建临时文件的应用程序使用。应允许应用程序在此目录中创建文件,但不应假定此类文件在应用程序调用之间保留。

/tmp上的文件层次结构标准 2.3

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

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

基本原理

IEEE 标准 P1003.2(POSIX,第 2 部分)提出了与上述部分类似的要求。

尽管存储在/tmp 中的数据可能会以特定于站点的方式被删除,但建议在系统启动时删除位于/tmp中的文件和目录。

FHS 根据历史先例和惯例添加了此建议,但并未将其作为一项要求,因为系统管理不在本标准的范围内。

POSIX 没有指定/var/tmpFHS 确实这样做了

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

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


Arc*_*ege 15

它们具有相同的目的和功能。每个版本的 UNIX/Linux 都会以不同的方式处理这些目录。从历史上看,在基于 RAM/swap 的文件系统出现之前,您拥有无盘系统,其中//usr文件系统将是只读的,/var(变量)将是读写的。该/tmp名称将是到 的符号链接/var/tmp。后来,无磁盘系统过时了,磁盘空间变得更便宜(拥有更大的根文件系统)并且技术允许从内存而不是磁盘安装文件系统。这/var/tmp目录已经过时,但仍被一些程序使用。

现在,更多的安全性默认设置在 上/tmp,如g+s,+t权限,但不在 上/var/tmp。此外,/var/tmp很少从 RAM 或交换安装。