在 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)覆盖默认临时目录。通过理解这些区别,可以更合理地规划临时文件存储策略,平衡性能与持久性需求。