插件窝 干货文章 Linux 中的 /tmp 目录是做什么用的?其与 /var/tmp 有什么区别?

Linux 中的 /tmp 目录是做什么用的?其与 /var/tmp 有什么区别?

文件 临时 持久化 存储 599    来源:    2025-04-20

在 Linux 系统中,/tmp/var/tmp 都是用于临时文件的目录,但它们在设计用途、生命周期和管理方式上有重要区别。以下是详细对比分析:


1. /tmp 目录

  • 用途:存储临时文件,供所有用户和系统进程使用。
  • 生命周期
    • 默认情况下,文件在系统重启时自动删除(具体行为取决于发行版)。
    • 部分系统通过 tmpwatchsystemd-tmpfiles 定期清理未访问的文件(例如 10 天未修改)。
  • 权限
    • 通常权限为 1777drwxrwxrwt),t 表示粘滞位(Sticky Bit),确保用户只能删除自己的文件。
  • 典型场景
    • 应用程序运行时生成的临时文件(如缓存、锁文件)。
    • 用户手动创建的短期临时文件。

2. /var/tmp 目录

  • 用途:存储需要持久化的临时文件,即使重启也应保留。
  • 生命周期
    • 文件通常保留更长时间(如 30 天或更久),甚至需要手动清理。
    • 设计目标是允许应用程序在重启后恢复未完成的任务(如大数据处理中间文件)。
  • 权限
    • 权限通常为 1777(类似 /tmp),但粘滞位可能不强制启用。
  • 典型场景
    • 需要跨重启保留的临时数据(如安装程序的备份文件)。
    • 长时间运行的进程生成的中间文件。

3. 关键区别总结

特性 /tmp /var/tmp
文件保留时间 重启删除或短期保留(≤10天) 长期保留(≥30天)
清理策略 自动清理 可能需手动清理
存储位置 通常挂载在内存(tmpfs 存储在磁盘
I/O 性能 更快(内存存储) 较慢(磁盘存储)
使用场景 短期临时文件 需持久化的临时文件

4. 技术细节补充

  • tmpfs 挂载
    现代 Linux 系统常将 /tmp 挂载为 tmpfs(内存文件系统),以提高性能并确保重启后清空。可通过 mount | grep tmp 确认: bash tmpfs on /tmp type tmpfs (rw,nosuid,nodev)
  • 清理工具

    • /tmp:由 systemd-tmpfiles-cleancron 任务定期清理。
    • /var/tmp:依赖管理员配置的清理策略(如日志轮转工具)。
  • 规范参考
    遵循 FHS(Filesystem Hierarchy Standard) 标准,定义 /tmp 为“非持久化临时存储”,而 /var/tmp 为“持久化临时存储”。


5. 最佳实践建议

  • 敏感数据:避免在 /tmp 存储敏感信息(可能被其他用户读取)。
  • 大文件:如需持久化且体积大,优先用 /var/tmp 而非 /tmp(避免耗尽内存)。
  • 自定义路径:应用程序可配置环境变量(如 $TMPDIR)覆盖默认临时目录。

通过理解这些区别,可以更合理地规划临时文件存储策略,平衡性能与持久性需求。