tmpfiles. d-用于创建、删除和清理挥发性和临时文件的配置

配置文件

/etc/tmpfiles.d/*.conf 用户定义通常在此目录
/run/tmpfiles.d/*.conf 由供应商体统
/usr/lib/tmpfiles.d/*.conf 由 RPM 提供通常系统管理员无需编辑

描述

  • systemd-tmpfiles 使用上述目录中的配置文件来描述通常驻留在目录 (/run 或 /tmp) 中的易失性和临时文件和目录的创建、清理和删除。

  • 易失性和临时文件和目录是那些位于 /run (以及 /var/run),/tmp,/var/tmp, API 文件系统, 如 /sys 或 /proc, 以及一些其他目录下 /var

  • 系统守护程序通常要求在下面 /run 专用运行时目录来放置通信套接字和类似内容。对于这些, 请考虑使用 RuntimeDirectory 在其单位文件中声明它们 (请参见 systemd. exec (5) 以了解详细信息), 如果这是可行的

配置格式

  • 每个配置文件都应以 package.conf 或者 package-part.conf。第二个变体应该在需要的时候使用, 这样就可以轻松地覆盖配置的这一部分。

  • 文件在 /etc/tmpfiles.d 中使用相同名称的文件替代 /usr/lib/tmpfiles.d 和 /run/tmpfiles.d 文件中 /etc/tmpfiles.d 覆盖同名文 /usr/lib/tmpfiles.d

  • 软件包应该安装他们的配置文件/usr/lib/tmpfiles.d 文件 /etc/tmpfiles.d 为本地管理员保留,可以使用此逻辑重写由供应商软件包安装的配置文件。所有配置文件都按其文件名按字典顺序排序, 而不管它们驻留在哪个目录中。如果多个文件

  • 指定相同的路径, 将应用具有字典最早名称的文件中的条目。所有其他冲突的条目将被记录为错误。当两行是前缀和后缀时, 前缀总是先处理, 后面是后缀。否则,文件/目录按其列出的顺序进行处理。

  • 如果管理员要禁用供应商提供的配置文件, 建议将 /etc/tmpfiles.d 目录中的文件 创建一个符号连接指向 /dev/null 文件

文件格式

  • 配置格式为每行包含
类型 路径 模式 所有者 所有组 时长 参数

 

类型

该类型由单个字母和一个感叹号 (可选) 组成。

以下翻译摘自作者 金步国

实例

路径

  • 路径”字段是指文件系统路径, 并且支持几个简单的替换标记

表 1. 可用于替换的标

符号 含义 详细信息
“%m” Machine ID 正在运行的系统的计算机 ID, 格式化为字符串。查看 machine-id (5) 了解更多信息
“%b” Boot ID 正在运行的系统的启动 ID, 格式化为字符串。random (4) 更多信息。
“%H” Host name 系统的主机名(hostname)
“%v” kernel release 内核版本(uname -r 的输出)
“%%” Escaped % 百分号自身(%)。使用”%%”表示一个真正的”%”字符

权限(Mode)

  • “权限”字段表示设置文件或目录的权限, 如果省略或设为 “-” 则表示使用默认权限, 也就是:对于目录使用”0755″、对于文件使用”0644″, 但对于 z, Z 表示不修改现有的权限。 此字段对于 x, r, R, L, t, a 没有意义。
  • 可选前缀 “~” 的含义是掩码, 也就是将此字段当作权限掩码来使用。 换句话说,就是将此字段设置的值与现有的权限做”位与”运算。
  • 举例来说,假设原有文件的权限是”0765″,此字段的值是”~1550″, 那么文件的最终权限将是”0540″。
  • 如果省略了 sticky/SUID/SGID 位, 那么对于文件来说相当于全部清除, 而对于目录来说则相当于保持不变
  • 例如”~550″,对于文件来说相当于”~0550″, 而对于目录来说则相当于”~7550″。 此特性在实践中仅对 Z 有实际价值。

属主,属组(UID,GID)

  • “属主”与”属组”字段分别表示文件或目录的所属用户与所属用户组。
  • 可以设为数字形式的UID/GIU值,也可以设为字符串形式的用户名称/组名称。
  • 如果省略或者设为 “-” 则表示使用默认值”0″(root)。
  • 但对于 z 与 Z 来说,省略或者设为 “-” 则表示不修改现有的”属主”与”属组”。 此字段对于 x, r, R, L, t, a 没有意义。

寿命(Age)

  • “寿命”字段用于判定在清理过期文件或子目录时应该删除哪些, 也就是决定了文件或子目录的”寿命”。
  • 如果文件或子目录的最后改动时间(ctime) 与当前系统时间之差已经大于”寿命”字段的值, 那么这些文件或子目录将被删除。 此字段的值是一个时间长度, 可以使用下面的时间单位后缀:
  • us(微秒), ms(毫秒), s(秒), m(分), h(时), d(天), w(周)。

  • 可以同时使用多个时间单位, 例如”5m10s”表示5分10秒(也就是310秒)。 如果省略了时间单位,那么表示使用默认单位”秒”。
  • 如果将此字段设为数字”0″, 那么表示在每次清理时都无条件的删除所有文件或子目录。
  • 此字段仅对
  • d, D, e, v, q, Q, C, x, X 有意义。

  • 如果省略此字段或将其设为 “-” ,那么表示不进行任何清理。
  • 如果此字段的值以 “~” 开头, 那么表示在每次清理时都无条件的保留指定目录直属的文件与子目录, 也就是仅清理直属子目录下的内容。

参数(Argument)

  • “参数”字段对不同的”类型”有不同的作用: 对于 L 来说,用于指定软连接的目标路径。
  • 对于 c, b 来说, 用于以”主设备号:次设备号”的格式设定设备节点的主/次设备号(十进制整数), 例如 “1:3” 。 对于 f, F, w 来说, 用于设置一个写入文件的短字符串(实际写入时会在末尾附加一个换行符)。
  • 对于 C 来说,用于指定源文件或者源目录。 对于 t, T 来说, 用于指定将要设置的扩展属性。
  • 对于 a, A 来说,用于指定将要设置的ACL属性。 对于 h, H 来说,用于指定将要设置的文件属性。 对于其他类型无意义,将被忽略。

列子

  • 例 1. 按照指定的UID/GID与权限创建目录,

  • 例 2. 创建一个带有 SMACK 属性的目录

  • 例 3. 创建一个不会被定期清理的目录

  • 例 4. 启用系统启动过程中的清理,以及基于时间的清理

  • 例 5. 在启动时清空缓存目录

发表评论