systemd-tmpfiles (英文:systemd temporary files manager) 命令是 Systemd 生态中的一个工具,它用来管理系统的临时文件或者临时目录。它与以前的工具如 tmpwatchtmpreaper 相比,使用起来更加可靠,更加安全,同时接口形式统一。systemd-tmpfiles 支持创建配置文件,实现更加细化的临时文件的管理。

本教程将详细的介绍 systemd-tmpfiles 命令的功能,及其使用方法,能够使你对 systemd-tmpfiles 命令有一个详细的了解,方便你使用该工具来管理你的临时文件或目录。

systemd-tmpfiles 命令语法

如下给出 systemd-tmpfiles 命令的详细语法结构:

systemd-tmpfiles [选项] --create [配置文件]
systemd-tmpfiles [选项] --clean [配置文件]
systemd-tmpfiles [选项] --remove [配置文件]

语法结构中各部分的解释说明:

  • --create:该选项用来根据指定的配置文件创建临时文件或临时目录
  • --clean:该选项用来根据指定的配置文件清理过期的临时文件或临时目录
  • --remove:该选项用来根据指定的配置文件删除所有临时文件或临时目录
  • [配置文件]:用来指定可选的配置文件(未指定配置文件时,使用系统默认的配置文件)
  • [选项]:指定命令提供的可用的选项

默认配置文件的常用路径为:

  • /etc/tmpfiles.d/*.conf:系统级的配置文件常用路径
  • /run/tmpfiles.d/*.conf:运行时临时配置文件的常用路径
  • /usr/lib/tmpfiles.d/*.conf:用户级的配置文件的常用路径

systemd-tmpfiles 命令使用示例

创建临时文件

可以使用系统的默认配置创建临时文件或者临时目录:

sudo systemd-tmpfiles --create

清理超过 7 天未访问的文件

使用如下命令清理 /tmp 目录中超过 7 天未访问的临时文件或者目录:

sudo systemd-tmpfiles --clean --age=7d /tmp

解释: --age=7d:指定时间为 7 天,dday 的首字母。

指定配置文件创建临时文件

可以指定一个配置文件如:/etc/tmpfiles.d/myconf.conf 创建临时文件,如下给出示例:

sudo systemd-tmpfiles --create /etc/tmpfiles.d/myconf.conf

测试配置而不实际运行

systemd-tmpfiles 命令像很多其他命令一样提供 --dry-run 选项来测试配置是否正常,而不会创建任何的临时文件或者临时目录:

sudo systemd-tmpfiles --dry-run --create /etc/tmpfiles.d/newconf.conf

systemd-tmpfiles 命令选项详解

如下给出 systemd-tmpfiles 命令选项的详细解释说明:

选项 说明 示例
--create 用于创建配置中指定的临时文件文件或者临时目录 systemd-tmpfiles --create
--clean 用来根据指定的配置文件清理过期的临时文件或临时目录 systemd-tmpfiles --clean
--remove 用来根据指定的配置文件删除所有临时文件或临时目录 systemd-tmpfiles --remove
--dry-run 测试运行,但是不实际创建临时文件或者临时目录 systemd-tmpfiles --dry-run
--boot 模拟启动环境
--prefix=PATH 指定要处理的文件路径 --prefix=/var/tmp
--exclude-prefix=PATH 排除指定路径下的临时文件或者临时目录 --exclude-prefix=/dev
--age=AGE 用来指定时间阈值,超过该指定时间的将被清理 --age="1h 30min"
--user 处理用户级的临时文件
-h 显示帮助信息 systemd-tmpfiles -h

时间单位说明:

单位 说明 示例
s 秒,秒英文单词的字母 30s
min 分钟,分钟的缩写 15min
h 小时,英文单词的首字母 2h
d 天,day的首字母 7d
w 周,week的首字母 2w
m 月,month单词的首字母 1m
y 年,year单词的首字母 1y

配置文件格式详解

配置文件一般由如下字段组成,示例形式如下:

# 类型 路径        权限 所有者 组   时长 参数
  d    /run/myapp  0755 appuser appgroup -   -

常用类型代码有:

类型 功能 示例
d 创建目录 d /run/myservice 0750 root root
f 创建文件 f /var/tmp/lockfile 0644 root root
F 清空文件内容 F /var/log/temp.log 0644 root root
v 创建子卷 (btrfs) v /var/lib/docker 0755 root root
L 创建符号链接 L /var/lock - - - ../run/lock
r 移除文件/目录 r /tmp/.*.swp
z 安全目录(SELinux) z /srv/web 0755 root root
p 命名管道 p /run/myfifo 0644 root root

systemd-tmpfiles 与相似工具对比

工具 特点 适用场景
systemd-tmpfiles 属于 systemd 系统的一部分,支持创建配置文件 现代 Linux 系统 (RHEL 8+, Debian 10+)
tmpwatch 仅具有基础的清理功能,在命令行中使用 传统 RHEL/CentOS 7 及更早版本
tmpreaper 仅具有基本的清理功能,支持创建配置文件 Debian/Ubuntu 系统

结语

本文全面的介绍了 systemd-tmpfiles 的语法结构及其功能,并给出了 systemd-tmpfiles 命令的具体使用示例,以及 systemd-tmpfiles 命令和其他命令之间的功能对比,相信你能够对 systemd-tmpfiles 命令有个基本的了解,并帮助你正确的使用 systemd-tmpfiles 命令创建临时文件或者临时目录。 systemd-tmpfiles 命令只要在 Linux 各发行版和 FreeBSD 系统中安装了 systemd,就可以使用。