systemd.target 中文手册

译者:金步国


版权声明

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

其他作品

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

联系方式

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


手册索引 · 指令索引systemd-241

名称

systemd.target — 目标单元配置

大纲

target.target

描述

以 ".target" 为后缀的单元文件, 封装了一个由 systemd 管理的启动目标, 用于在启动过程中将一组单元汇聚到一个众所周知的同步点。

此类单元没有专用的配置选项。 systemd.unit(5) 中描述了通用于所有单元类型的配置选项(亦称"配置指令"或"单元属性"), 它们位于 [Unit] 与 [Install] 小节。因为此类单元没有专用的配置选项, 所以并不存在专用的 [Target] 小节。

对于被目标单元汇聚的单元来说, 目标单元本身并不能提供任何额外的附加功能。 目标单元的功能仅仅是通过依赖关系将一组单元汇聚在一起, 形成一个同步点,并给这个同步点取一个众所周知的名称, 以便用作启动目标或其他单元的依赖。 目标单元非常适合用于替代传统的SysV运行级机制, 特别地,出于兼容性考虑, 类似 runlevel3.target 这样的目标单元, 应该专用于兼容传统SysV运行级的场合。 详见 systemd.special(7) 手册。

自动依赖

隐含依赖

target 单元没有隐含依赖。

默认依赖

除非明确设置了 DefaultDependencies=no ,否则 target 单元将会自动添加下列依赖关系:

  • 对通过 Wants=Requires= 汇聚的单元的 After= 依赖(除非指定的单元中含有 DefaultDependencies=no)。 注意,必须明确的在 target 单元文件中定义对被汇聚单元的 Wants=Requires= 依赖。 例如,如果你在 some.service 单元文件中定义了 Wants=some.target , 那么并不会自动添加上述表示先后顺序的依赖关系。

  • Conflicts=shutdown.targetBefore=shutdown.target 依赖。

例子

例 1. 一个简单的独立目标单元

# emergency-net.target

[Unit]
Description=Emergency Mode with Networking
Requires=emergency.target systemd-networkd.service
After=emergency.target systemd-networkd.service
AllowIsolate=yes

当在 target 单元中添加对其他单元的依赖时,务必要检查这些单元是否设置了 DefaultDependencies=no 。 对于服务单元来说,除非明确设置了 DefaultDependencies=no , 否则将会自动获得 Requires=sysinit.target, After=sysinit.target 依赖。 在本例中,因为 emergency.targetsystemd-networkd.service 都明确设置了 DefaultDependencies=no , 也就是说它们都不包含对 sysinit.target 的依赖, 所以,很适合将它们引用到本例的 target 单元中。

要想进入本例所设置的"带网络的紧急维修模式",可以使用 systemctl isolate emergency-net.target 命令,也可以使用 systemd.unit=emergency-net.target 内核引导选项。

如果某个单元将 WantedBy=emergency-net.target 加入到 [Install] 小节之中,那么在使用 systemctl enable 命令启用该单元时,将会同时确保该单元在 emergency-net.target 之前启动。 还可以通过 systemctl add-wants 命令在无须修改单元文件的情况下, 将任意单元添加为 emergency.target 的依赖。


参见

systemd(1), systemctl(1), systemd.unit(5), systemd.special(7), systemd.directives(7)