本文译者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布。
本文译者十分愿意与他人分享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有的作品集:
由于译者水平有限,因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好),请来信指出,任何提高译文质量的建议我都将虚心接纳。
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