当前位置: 首页 > 文档资料 > systemd 中文手册 >

systemd.path 中文手册

优质
小牛编辑
143浏览
2023-12-01

名称

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)