首页/系统/Linux 运维命令速查/systemd-tmpfiles 清理临时文件
systemd 与服务42 条

systemd-tmpfiles 清理临时文件

系统级临时文件生命周期管理:/usr/lib/tmpfiles.d 定义规则、systemd-tmpfiles --clean 按年龄清理、--create 补建目录;守护哪些目录被自动清空的底层机制。

Linux 运维命令速查系统更新于 2026-10-13

systemd-tmpfiles 是什么

systemd-tmpfiles 负责临时文件与目录的生命周期管理:/usr/lib/tmpfiles.d 与 /etc/tmpfiles.d 下的规则声明哪些目录需要创建、哪些内容按年龄清理。--create 补建缺失的目录与文件,--clean 按规则清理过期内容。日常 /tmp 的自动清理就来自这套机制,理解它才能解释「文件为什么凭空消失」。

基本信息

用途以声明方式管理临时目录与清理策略
语法systemd-tmpfiles --create / --clean 配置文件
规则目录/etc/tmpfiles.d(自定义)、/usr/lib/tmpfiles.d(系统默认)
触发方式systemd-tmpfiles-clean.timer 每日运行

典型使用场景

  • 让应用缓存目录按年龄自动清理
  • 开机时自动补建缺失的运行时目录
  • 排查 /tmp 或 /var/tmp 中文件莫名消失的原因
  • 统一多台机器的临时目录策略
  • 用规则取代手工编写的清理脚本
  • 确认服务依赖的目录权限是否与预期一致

查看与执行

查看与执行
systemd-tmpfiles --cat-config | head -n 40    # 查看合并后的所有规则
sudo systemd-tmpfiles --clean                 # 按规则清理过期内容
sudo systemd-tmpfiles --create                # 补建缺失目录与文件
cat /usr/lib/tmpfiles.d/tmp.conf              # 查看系统默认规则
systemctl cat systemd-tmpfiles-clean.timer    # 查看清理定时器
systemctl status systemd-tmpfiles-clean.timer --no-pager | head

自定义规则

自定义规则
# /etc/tmpfiles.d/app.conf:清理 7 天前的应用缓存
q /data/app/cache - - - 7d
# 类型:d 建目录、q 清理目录内容、f 建文件
# 年龄支持 7d / 2w / 1h 等写法

规则类型与字段

类型作用说明
d创建目录已存在时不修改其属性
q清理目录内容按年龄删除,目录本身保留
f创建文件内容为空或按需生成
年龄字段如 7d、2w、1h超过该时长才会被清理
路径字段绝对路径自定义规则建议放在 /etc/tmpfiles.d
清理动作由 systemd-tmpfiles-clean.timer 每日触发;应用打算自己实现清理逻辑前,先确认是否与系统规则重叠,避免两边同时删除。
把重要数据长期放在 /tmp 或 /var/tmp 是常见的误判:这些目录会按年龄自动清空,长期存放的文件随时可能消失。
--create 只负责创建缺失的目录与文件,不会修正已存在对象的权限;权限不符时需要手动处理,或在规则里重新声明。

易错点

  • 把长期数据放在 /tmp:被系统按年龄清理,业务数据凭空消失
  • 自定义规则与系统规则路径重叠:两边都参与清理,删除时机难以预估
  • 以为 --create 会修正权限:已存在的目录权限不会被改动,服务仍可能因权限失败
  • 不看合并后的规则就下结论:只有 --cat-config 才能看到真正生效的完整配置

数据来源与参考

  • man 8 systemd-tmpfiles
  • man 5 tmpfiles.d

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌