尝试了解 systemd 目标想要什么

尝试了解 systemd 目标想要什么

我试图更好地理解 systemd 中的目标单元是如何工作的,但对graphical.target“想要”的内容感到困惑。

如果我跑ls -l进去/etc/systemd/system/graphical.target.wants我会看到:

total 0
lrwxrwxrwx 1 root root 43 Jul 19 16:50 accounts-daemon.service -> /lib/systemd/system/accounts-daemon.service

如果我跑ls -l进去/lib/systemd/system/graphical.target.wants我会看到:

total 0
lrwxrwxrwx 1 root root 39 Jul 12 11:28 systemd-update-utmp-runlevel.service -> ../systemd-update-utmp-runlevel.service

该文件/lib/systemd/system/graphical.target包含:

[Unit]
Description=Graphical Interface
Documentation=man:systemd.special(7)
Requires=multi-user.target
Wants=display-manager.service
Conflicts=rescue.service rescue.target
After=multi-user.target rescue.service rescue.target display-manager.service
AllowIsolate=yes

最后,如果我运行systemctl show --property "Wants" graphical.target我会得到:

Wants=hddtemp.service ureadahead.service speech-dispatcher.service systemd-update-utmp-runlevel.service grub-common.service ntp.service lxdm.service accounts-daemon.service ondemand.service

“想要”的来源有哪些权威?

答案1

单元文件的有效依赖关系由多个来源组合而成。对于graphical.target,它们是:

  • Wants=文件本身中的语句graphical.target(请注意,单元文件本身可以放置在/lib/run或下的各个目录中/etc,它们按此顺序相互映射);

  • Wants=所谓的 drop-in 文件中的语句$PREFIX/systemd/system/graphical.target.d/*.conf(其中 PREFIX 如上所述,并且同名的 drop-in 文件相互独立);

  • 符号链接到特殊目录中所需的单元$PREFIX/systemd/system/graphical.target.wants(同样,前缀如上所述)。

来自所有这些来源的依赖项只是简单地相加,此外还有许多隐式依赖项(请阅读systemd.目标(5)了解详情)。

因此,要查看有效的依赖关系,最好使用命令systemctl show-property -p Wants。不幸的是,无法查看哪些依赖项来自哪些位置 - 如果您想删除一个依赖项,则必须手动检查这一点。

相关内容