根据我自己的经验,我注意到大多数人使用 /tmp/ 作为临时文件或保存在磁盘写入中,但我不经常看到有人推荐甚至使用 /dev/shm 来代替。
这是为什么?
答案1
/dev/shm
旨在用于文件系统中的共享内存段。共享内存有两种类型:SysV 共享内存和 POSIX 共享内存。 POSIX 共享内存使用通过 创建的命名段shm_open
,这些段通常位于 下的文件系统中/dev/shm
,该文件系统通常是 tmpfs。 /dev/shm
通常安装nosuid
和noexec
。
/tmp
旨在用于临时文件。在某些系统上,它是 tmpfs,但在许多系统上它由磁盘支持。在许多系统上,可以运行来自的程序,/tmp
因为它没有被标记noexec
。系统管理员可以适当地调整其大小(更大或更小)以适应特定系统的需要。
/var/tmp
类似于/tmp
,但后者通常在启动时被清除,而前者则不会。大多数情况下应该使用后者,但如果临时文件需要保留较长时间,则/var/tmp
可以使用。
因此,没有明确的原因说明您实际上无法使用/dev/shm
临时文件,但这不是典型的用例或其预期目的,人们不会期望它。如果您的目标是编写易于维护并且能够在各种系统上以最佳方式工作的代码,那么最好遵循约定,除非您有令人信服的理由不这样做。
答案2
严格来说,我不知道为什么(或者是否)/tmp
比/dev/shm
.我知道为什么应该更推荐它。
这文件系统层次结构标准定义 Linux 发行版中的目录结构和目录内容。它指定/tmp
:
该
/tmp
目录必须可供需要临时文件的程序使用。
但它没有具体说明/dev/shm
。搜索shm
在文字版来确认这一点。