systemd-tmpfiles 中文手册
名称
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
非特权 --cleanup 操作
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
)