linux会自动清理/tmp目录,现代发行版默认通过systemd-tmpfiles-clean.timer每日触发清理,依据/tmp.conf规则(如10d保留期)删除超期且未被进程占用的普通文件和空目录,排除tmpfs、打开文件及配置指定路径。

/tmp 目录的管理不是靠手动删文件,而是由 systemd-tmpfiles 统一驱动的声明式机制——它自动创建目录、设权限、定期清理过期内容,全程可配置、可追溯、不依赖人工干预。
默认清理行为怎么看
现代 Linux(Ubuntu、CentOS、Debian 等)默认启用 systemd-tmpfiles 清理:
- 如果 /tmp 挂载为 tmpfs(内存文件系统),重启即清空;
- 如果是磁盘目录,系统按配置清理“10 天内未访问”的文件和子目录(包括直接放在 /tmp 下的文件);
- 隐藏文件(以 . 开头)、systemd-private-* 类临时隔离目录、容器挂载点等默认被跳过;
- 关键服务(如 socket、pid 文件)通常存于 /run 或受保护路径,不会被误删。
配置规则在哪改
所有策略都写在配置文件里,优先级:/etc/tmpfiles.d/ > /run/tmpfiles.d/ > /usr/lib/tmpfiles.d/。常用操作:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 查当前生效规则:
systemd-tmpfiles --cat-config或ls /etc/tmpfiles.d/ /usr/lib/tmpfiles.d/ | grep -i tmp; - 覆盖默认策略:新建
/etc/tmpfiles.d/my-tmp.conf,例如:d /tmp 1777 root root 7d(7 天未访问就清理)x /tmp/keep-this-dir(跳过该目录下所有内容)q /var/log/temp 1755 syslog adm 3d(对自定义日志临时目录设 3 天清理); - 保存后无需重启,下次定时任务或运行
sudo systemd-tmpfiles --clean即生效。
定时清理是否在运行
确认机制是否启用:
- 检查定时器状态:
systemctl status systemd-tmpfiles-clean.timer(应显示 active); - 查看上次执行日志:
journalctl -u systemd-tmpfiles-clean.service -n 20 --since "1 day ago"; - 模拟清理过程(不真删):
sudo systemd-tmpfiles --clean --dry-run /etc/tmpfiles.d/*.conf,观察哪些路径会被处理。
紧急时怎么安全清理
仅在磁盘告急或服务异常时手动干预,避免 rm -rf /tmp/*:
- 只删普通旧文件:
find /tmp -depth -type f -mtime +10 -delete; - 排除 systemd 私有目录:
find /tmp -path '/tmp/systemd-private-*' -prune -o -type f -mtime +10 -delete; - 定位占用大户:
du -sh /tmp/* 2>/dev/null | sort -hr | head -10,再针对性处理; - 清理前建议先
lsof +D /tmp查看是否有进程正使用其中文件。
不复杂但容易忽略:/tmp 的管理本质是“配规则”,不是“删文件”。只要配置到位,系统会按时、按需、安全地完成全部工作。










