systemd.path 中文手册
名称
systemd.path — 路径单元配置
大纲
path
.path
描述
以".path
" 为后缀的单元文件,封装了一组由 systemd 监视的文件系统路径,以支持基于路径的启动。
本手册列出了所有专用于此类单元的配置选项(亦称"配置指令"或"单元属性")。systemd.unit(5)中描述了通用于所有单元类型的配置选项,它们位于 [Unit] 与 [Install] 小节。此类单元专用的配置选项位于 [Path] 小节。
每个路径单元都必须有一个与其匹配的单元,以用于在路径发生变化时启动。匹配的单元可以通过 Unit=
选项(见下文)明确指定。若未指定,则默认是与该单元名称相同的 .service 单元(不算后缀)。例如 foo.path
默认匹配 foo.service
单元。
因为在单元内部实际上使用内核的inotify(7)函数监视文件系统的变化,所以,受制于 inotify 的缺陷,只能监视本机文件系统的变化,而不能监视远程网络文件系统的变化。
自动依赖
隐含依赖
下列依赖关系是自动隐含的:
如果一个 path 单元的文件系统路径位于另一个 mount 单元之下,那么将会自动获得对其所依赖的挂载点单元的
Requires=
与After=
依赖。所有 path 单元都将自动获得对 匹配单元的
Before=
依赖。
默认依赖
除非明确设置了 DefaultDependencies=no
,否则 path 单元将会自动添加下列依赖关系:
Before=paths.target
,After=sysinit.target
,Requires=sysinit.target
,Conflicts=shutdown.target
,Before=shutdown.target
,以确保该单元在关机前可以被干净的关闭。只有那些在系统启动早期就必须启动的路径,以及那些必须在关机流程结尾才能停止的路径才需要设置DefaultDependencies=no
。
选项
路径单元文件中必须包含一个 [Path] 小节,其中包含了被监视的文件系统路径的相关信息。这里只列出仅能用于 [Path] 小节的选项(亦称"指令"或"属性"):
PathExists=
,PathExistsGlob=
,PathChanged=
,PathModified=
,DirectoryNotEmpty=
定义监视哪种类型的路径变化:
PathExists=
监视指定的路径是否存在,若存在则启动匹配单元。PathExistsGlob=
监视是否存在至少一个与模式匹配的路径,若存在则启动匹配单元。PathChanged=
监视指定路径的写入句柄是否恰好被关闭,若存在写入句柄且恰好被关闭,则启动匹配单元。PathModified=
监视指定路径的最后修改时间是否发生变化,若发生变化则启动匹配单元。DirectoryNotEmpty=
监视指定的文件夹是否非空,若包含至少一个文件或子目录,则启动匹配单元。所有这些选项的值 都必须是绝对路径。
可以多次使用这些选项 以监控多个路径。如果为某个选项指定了一个空字符串,则表示清空该选项 之前设置的所有监视路径。
如果在启动 path 单元时,指定的路径已经存在(对于
PathExists=
与PathExistsGlob=
来说)或者 指定的目录非空(对于DirectoryNotEmpty=
来说),那么将会立即同时启动匹配单元。不过,对于PathChanged=
与PathModified=
来说,并不遵守这个规则。如果没有权限监视指定的路径,那么 systemd 将会 一直等待权限满足之后 才会开始监视。
Unit=
该路径单元的匹配单元,也就是被路径的变化启动的单元。参数是一个不以 "
.path
" 结尾的单元名。默认值是与此路径单元同名的服务单元(见上文)。建议将路径单元的名字 与被该路径启动的匹配单元的名字 保持一致 (也就是仅单元后缀名不同)。MakeDirectory=
接受一个布尔值。设为
yes
表示如果指定的目录不存在则首先创建它然后再监视它。此选项对PathExists=
无效。默认值为no
DirectoryMode=
此选项指定在
MakeDirectory=
时新建目录的权限(八进制表示法)。默认值是0755
参见
systemd(1), systemctl(1), systemd.unit(5), systemd.service(5), inotify(7), systemd.directives(7)