本文译者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布。
本文译者十分愿意与他人分享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有的作品集:
由于译者水平有限,因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好),请来信指出,任何提高译文质量的建议我都将虚心接纳。
systemd-tmpfiles, systemd-tmpfiles-setup.service, systemd-tmpfiles-setup-dev.service, systemd-tmpfiles-clean.service, systemd-tmpfiles-clean.timer — 创建、删除、清理 易变文件与临时文件
systemd-tmpfiles
[OPTIONS...] [CONFIGFILE
...]
系统单元:
systemd-tmpfiles-setup.service
systemd-tmpfiles-setup-dev.service
systemd-tmpfiles-clean.service
systemd-tmpfiles-clean.timer
用户单元:
systemd-tmpfiles-setup.service
systemd-tmpfiles-clean.service
systemd-tmpfiles-clean.timer
systemd-tmpfiles 根据配置文件 tmpfiles.d(5) 的指引,创建、删除、清理 易变文件与临时文件。
若未指定任何 CONFIGFILE
参数,则表示使用在所有标准目录中找到的全部配置文件。
若使用 --replace=
选项,
则表示使用 PATH
CONFIGFILE
文件代替
PATH
文件,否则表示仅使用 CONFIGFILE
文件。
CONFIGFILE
必须是下列之一:(1)配置文件的绝对路径;
(2)特殊值 "-
" 表示仅从标准输入读取配置;
(3)不含路径的纯文件名(basename),
表示在所有
tmpfiles.d(5)
配置目录中搜索名称匹配的文件,并在匹配的文件中使用
优先级最高的那一个。
能够识别的命令行选项如下:
--create
¶创建或写入
所有
f
,
F
,
w
,
d
,
D
,
v
,
p
,
L
,
c
,
b
,
m
标记的文件与目录。
所有
z
,
Z
,
t
,
T
,
a
,
A
标记的文件与目录都将被设置相应的
属主/属组、权限、安全标签。
--clean
¶清理 所有过期的 文件与目录
--remove
¶删除
D
, R
标记的目录中的内容,以及
r
, R
标记的目录与文件自身。
--user
¶执行"用户"配置,也就是用户配置目录中的 tmpfiles.d
配置文件。
--boot
¶也执行带有"!"标记的行。
--prefix=path
¶仅作用于 带有特定前缀的路径, 可以多次使用此选项。
--exclude-prefix=path
¶忽略 带有特定前缀的路径, 可以多次使用此选项。
--root=root
¶指定一个"根目录",包括配置文件在内的所有路径都将加上
root
前缀。
注意,此选项不会改变配置文件中设置的用户与组的解析方法。 无论是否使用此选项,用户与组都始终根据主机上的用户数据库进行解析, 而不会使用 任何存储在指定"根目录"下的用户数据库。
--replace=PATH
¶如果使用了此选项,那么必须至少指定一个
CONFIGFILE
文件。所有位于
tmpfiles.d(5)
目录中的配置文件都会被读取,但 PATH
所对应的配置文件
将会被 CONFIGFILE
文件所代替(优先级也相同)。
当软件包安装脚本运行时, 属于该软件包的文件在磁盘上尚不存在, 但是管理员针对该软件包定制的配置文件可能已经存在(并且拥有更高的优先级)。 在这种情况下,可以使用此选项模拟替补缺失的文件。
--cat-config
¶显示全部配置文件的内容。 在显示每个配置文件内容之前,首先以注释的形式显示该配置文件的文件名。
--no-pager
¶不将程序的输出内容管道(pipe)给分页程序。
-h
, --help
¶--version
¶可以同时使用 --create
, --clean
, --remove
选项(在这种情况下,按照先清理和删除旧文件、后创建新文件的顺序操作)。
例如,可以在系统启动的过程中使用下面的命令,
实现在删除旧文件的同时又创建新文件:
systemd-tmpfiles --remove --create
systemd-tmpfiles
尽量避免更改目录的访问时间(atime)与修改时间(mtime),
这需要 CAP_FOWNER
特权。
当以非root运行时,
检查目录的内容会更新目录的访问时间(atime),
这可能会妨碍正确清理目录的内容。
返回值为 0 表示成功。如果某些配置行在语法上是无效的(语法错误、缺少参数……),
那么这些语法错误的行必须被忽略,但是如果没有发生其他错误,那么返回
65
(EX_DATAERR
from
/usr/include/sysexits.h
)。如果某些配置行在语法上是正确的,
但不能正确执行(缺少权限,在不存在的目录中创建文件、
向 /sys/
写入无效内容…),那么返回 73
(EX_CANTCREAT
from /usr/include/sysexits.h
)。
否则,返回 1
(EXIT_FAILURE
from
/usr/include/stdlib.h
)