在 Linux 系统中,/tmp
和 /var/tmp
都是用于临时文件的目录,但它们在设计用途、生命周期和管理方式上有重要区别。以下是详细对比分析:
/tmp
目录tmpwatch
或 systemd-tmpfiles
定期清理未访问的文件(例如 10 天未修改)。1777
(drwxrwxrwt
),t
表示粘滞位(Sticky Bit),确保用户只能删除自己的文件。/var/tmp
目录1777
(类似 /tmp
),但粘滞位可能不强制启用。特性 | /tmp |
/var/tmp |
---|---|---|
文件保留时间 | 重启删除或短期保留(≤10天) | 长期保留(≥30天) |
清理策略 | 自动清理 | 可能需手动清理 |
存储位置 | 通常挂载在内存(tmpfs ) |
存储在磁盘 |
I/O 性能 | 更快(内存存储) | 较慢(磁盘存储) |
使用场景 | 短期临时文件 | 需持久化的临时文件 |
tmpfs
挂载:/tmp
挂载为 tmpfs
(内存文件系统),以提高性能并确保重启后清空。可通过 mount | grep tmp
确认:
bash
tmpfs on /tmp type tmpfs (rw,nosuid,nodev)
清理工具:
/tmp
:由 systemd-tmpfiles-clean
或 cron
任务定期清理。/var/tmp
:依赖管理员配置的清理策略(如日志轮转工具)。规范参考:
遵循 FHS(Filesystem Hierarchy Standard) 标准,定义 /tmp
为“非持久化临时存储”,而 /var/tmp
为“持久化临时存储”。
/tmp
存储敏感信息(可能被其他用户读取)。/var/tmp
而非 /tmp
(避免耗尽内存)。$TMPDIR
)覆盖默认临时目录。通过理解这些区别,可以更合理地规划临时文件存储策略,平衡性能与持久性需求。