/tmp用于瞬时临时文件,重启清空或10天自动清理;/var/tmp用于跨重启临时数据,标准保留30天,需应用自行管理过期文件。

/tmp 和 /var/tmp 都是 Linux 中存放临时文件的标准目录,但它们的生命周期、用途和清理方式有明确分工,不能混用。
/tmp:短时临时文件,重启即清或10天自动删
这个目录面向“瞬时性”需求,比如程序运行时生成的锁文件、安装包解压内容、编译中间产物等。它的特点是:
- 所有用户默认可读写(权限通常是 1777)
- 若挂载为 tmpfs(内存文件系统),每次重启自动清空,不占磁盘空间,但大文件可能因内存不足写入失败
- 若挂载在磁盘上,systemd 系统通过 systemd-tmpfiles 默认每 10 天清理一次未访问文件;Debian/Ubuntu 还会额外跑 tmpreaper cron 任务,支持跳过特定后缀(如
.lock)或保护挂载点下文件 - 不建议存放需跨重启保留的数据
/var/tmp:跨重启临时数据,30天为清理基准
它不是“更高级的 /tmp”,而是专为需要稍长存活期的临时数据设计,比如某些服务的缓存快照、升级过程中的备份片段、长时间运行任务的中间状态等。
- 文件在系统重启后仍保留,符合 FHS 对“持久化临时存储”的定义
- 标准建议保留至少 30 天,systemd 的 /usr/lib/tmpfiles.d/tmp.conf 中通常配置为
d /var/tmp 1777 root root 30d - 一般不会被日常脚本(如 tmpreaper)覆盖,除非管理员显式扩展规则
- 应用若依赖此目录长期存临时数据,应自行检查并清理过期内容,不能完全依赖系统机制
手动清理与安全提醒
执行清理前务必确认目标路径,避免误删:
- 清空 /tmp 可用
sudo find /tmp -mindepth 1 -delete(比rm -rf /tmp/*更安全,不匹配隐藏文件) - 清 /var/tmp 前建议先
find /var/tmp -type f -mtime +30查看超期文件,再决定是否批量删除 - 禁止直接
rm -rf /tmp或rm -rf /var/tmp—— 这会删掉目录本身,导致后续程序创建失败 - 若应用将临时文件写入子目录(如
/tmp/myapp_123/),应确保该目录在程序退出时主动清理,否则可能堆积
配置清理策略的关键位置
不同发行版管理方式略有差异,主要配置点如下:
-
systemd 系统:查看
/usr/lib/tmpfiles.d/tmp.conf或/etc/tmpfiles.d/*.conf,修改后运行sudo systemd-tmpfiles --clean立即生效 -
旧版 RHEL/CentOS 6:配置在
/etc/cron.daily/tmpwatch,使用tmpwatch工具 -
Debian/Ubuntu:
/etc/default/rcS控制是否启用TMPTIME,/etc/tmpreaper.conf定义排除规则 - 自定义服务可通过
RuntimeDirectory=(systemd unit 中)让 systemd 自动创建并管理专属临时目录,更安全可靠











