systemd.path 中文手册

译者:金步国


版权声明

本文译者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布。

其他作品

本文译者十分愿意与他人分享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有的作品集:

联系方式

由于译者水平有限,因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好),请来信指出,任何提高译文质量的建议我都将虚心接纳。


手册索引 . 指令索引systemd-235

名称

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)