本文译者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布。
本文译者十分愿意与他人分享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有的作品集:
由于译者水平有限,因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好),请来信指出,任何提高译文质量的建议我都将虚心接纳。
systemd.special — 特殊的 systemd 单元
basic.target
,
bluetooth.target
,
cryptsetup-pre.target
,
cryptsetup.target
,
ctrl-alt-del.target
,
boot-complete.target
,
default.target
,
emergency.target
,
exit.target
,
final.target
,
getty.target
,
getty-pre.target
,
graphical.target
,
halt.target
,
hibernate.target
,
hybrid-sleep.target
,
suspend-then-hibernate.target
,
initrd-fs.target
,
initrd-root-device.target
,
initrd-root-fs.target
,
kbrequest.target
,
kexec.target
,
local-fs-pre.target
,
local-fs.target
,
machines.target
multi-user.target
,
network-online.target
,
network-pre.target
,
network.target
,
nss-lookup.target
,
nss-user-lookup.target
,
paths.target
,
poweroff.target
,
printer.target
,
reboot.target
,
remote-cryptsetup.target
,
remote-fs-pre.target
,
remote-fs.target
,
rescue.target
,
rpcbind.target
,
runlevel2.target
,
runlevel3.target
,
runlevel4.target
,
runlevel5.target
,
shutdown.target
,
sigpwr.target
,
sleep.target
,
slices.target
,
smartcard.target
,
sockets.target
,
sound.target
,
suspend.target
,
swap.target
,
sysinit.target
,
system-update.target
,
system-update-pre.target
,
time-sync.target
,
timers.target
,
umount.target
,
-.slice
,
system.slice
,
user.slice
,
machine.slice
,
-.mount
,
dbus.service
,
dbus.socket
,
display-manager.service
,
init.scope
,
syslog.socket
,
system-update-cleanup.service
-.mount
¶根文件系统挂载点。 这是一个无条件启动、并在整个系统运行过程中 始终保持活动(active)状态的挂载点单元。
basic.target
¶启动基本系统。
所有服务单元(明确设置了
DefaultDependencies=no
的除外)都自动隐含了
After=basic.target
依赖。
该目标一般间接包含了:所有本地挂载点 mount 单元、
/var
, /tmp
,
/var/tmp
挂载点 mount 单元、
swap, socket, timer, path 单元,
以及其他系统守护进程通常必需的系统初始化单元。
注意,本地挂载点 mount 单元在某些特定情形下也可以是远程网络文件系统。
该目标一般仅直接包含其他 target 单元。 在完整的系统启动过程中, 该目标只是一个 用于分隔不同启动阶段的同步节点。详见 bootup(7) 手册。
boot-complete.target
¶专用于标记启动流程已经成功完成的同步节点。
(系统管理员)必须手动在此目标单元中添加对完成启动流程所必须的所有单元的
Requires=
依赖。
那些必须在启动流程已经成功完成之后才能启动的单元,
可以通过设置 Requires=boot-complete.target
达到目的。
注意,默认情况下,此目标单元并不在系统启动流程中,仅当至少有一个单元设置了
Requires=boot-complete.target
的情况下,才会被加入启动流程。
系统服务
systemd-boot-check-no-failures.service(8)
对系统进行常规健康检查,并且在
boot-complete.target
之前启动。
系统服务
systemd-bless-boot.service(8)
将启动成功的信息传递给引导管理器,并且在
boot-complete.target
之后启动。
ctrl-alt-del.target
¶当在控制台上按下 Control+Alt+Del 组合键时要启动的目标单元。
通常是一个指向
reboot.target
的软连接(别名)
cryptsetup.target
¶专用于安装加密块设备的 目标单元。
dbus.service
¶专用于启动 D-Bus 总线守护进程的服务单元。 当此服务启动完成之后, systemd 将会连接到此服务上注册其他各种服务。
dbus.socket
¶专用于 D-Bus 系统总线的套接字单元。
所有 Type=dbus
的单元
都自动依赖于此单元。
default.target
¶默认的启动目标。
通常是指向
multi-user.target
或
graphical.target
的软连接(别名)。
可用
systemd.unit=
内核引导选项
指定它。
display-manager.service
¶显示管理器服务。
通常是指向 gdm.service
或类似的显示管理器服务的软连接(别名)。
emergency.target
¶紧急维修模式,专用于在控制台上启动一个紧急维修 shell 。
该单元不包含任何其他 service 或 mount 单元。
它仅启动一个运行交互式 shell 的最小化系统,
通常仅在其中运行一个PID=1的 systemd 进程以及一个 shell 进程。
此单元一般仅用于两种情况:(1)作为内核引导选项 systemd.unit=
的参数;
(2)某个必需的文件系统检查失败导致无法继续启动。
与此单元用途类似的 rescue.target
则会启动一些最基本的服务并且挂载所有文件系统。
内核引导选项 "systemd.unit=emergency.target
"
兼容传统 SysV 风格的
"emergency
" 的等价缩写。
启动到 emergency.target
在很大程度上
相当于使用 "init=/bin/sh
" 内核引导选项,
不同之处在于紧急维修模式额外提供了完整的系统与服务管理功能,
从而可以启动特定的单元以继续完成未尽的启动流程。
exit.target
¶专用于关闭系统或 systemd 用户实例。
对于不在容器中运行的常规系统来说,
等价于 poweroff.target
;
但亦可在容器中使用。
当 systemd 以用户实例运行并且收到
SIGTERM
或 SIGINT
信号时,将会启动该目标。
通常,
此单元间接包含
shutdown.target
单元。
final.target
¶专用于关机流程尾部的目标单元。 用于容纳那些 应该在常规服务全部退出、并且所有挂载点全部卸载之后 才能停止的服务。
getty.target
¶专用于包含静态配置的本地
getty
实例的目标单元。
graphical.target
¶专用于启动图形化登录界面的目标单元,
其中包含了
multi-user.target
单元。
所有专用于实现图形化登录的单元的
"[Install]
" 小节中,
都应该包含 WantedBy=graphical.target
指令,
以确保这些单元被添加到了
graphical.target
单元中。
hibernate.target
¶专用于"休眠到硬盘"的目标单元,
其中包含了 sleep.target
单元(Requires=sleep.target 与 After=sleep.target)。
hybrid-sleep.target
¶专用于同时"休眠到硬盘"以及"休眠到内存"的目标单元,
其中包含了
sleep.target
单元(Requires=sleep.target 与 After=sleep.target)。
suspend-then-hibernate.target
¶先将系统"休眠到内存"一段时间,
然后再唤醒系统并将系统"休眠到硬盘"。其中包含了
sleep.target
单元(Requires=sleep.target 与 After=sleep.target)。
halt.target
¶专用于关闭系统但并不切断电源的目标单元。
它与关闭系统并切断电源的
poweroff.target
单元
并不相同。
注意,如果应用程序只想关闭系统但并不切断电源(必须手动关闭电源),
那么不应该直接启动此目标,而应该使用 systemctl halt
命令(有可能还需要加上 --no-block
选项)或者直接调用
systemd(1) 的
org.freedesktop.systemd1.Manager.Halt D-Bus
方法。
init.scope
¶systemd(PID=1)自身所在的 scope 单元。 该单元在系统运行期间始终保持活动(active)状态。
initrd-fs.target
¶systemd-fstab-generator(3)
会自动将
Before=initrd-fs.target
添加到
sysroot-usr.mount
单元中,
以及从 /etc/fstab
中带有
x-initrd.mount
选项且不带
noauto
选项的挂载点派生的 mount 单元中。
initrd-root-device.target
¶专用于 initrd 环境的目标单元,表示根文件系统设备已经可用, 但是尚未挂载。 systemd-fstab-generator(3) 与 systemd-gpt-auto-generator(3) 会在实际挂载根文件系统之前,自动设置对此单元的依赖。
initrd-root-fs.target
¶systemd-fstab-generator(3)
会自动将
Before=initrd-root-fs.target
添加到
sysroot.mount
单元中。
[提示] sysroot.mount
是根据内核引导选项自动生成的单元,封装了根分区的挂载点。
kbrequest.target
¶当在控制台上按下 Alt+↑ 组合键时要启动的目标单元。 因为任何能够物理接触键盘的人, 无须认证,都可以按下此组合键, 所以必须小心使用。
kexec.target
¶专用于通过内核的 kexec 接口 重启整个系统。
注意,如果应用程序想要通过内核的 kexec 接口重启整个系统,
那么不应该直接启动此目标,而应该使用 systemctl kexec
命令(有可能还需要加上 --no-block
选项)或者直接调用
systemd(1) 的
org.freedesktop.systemd1.Manager.KExec D-Bus
方法。
local-fs.target
¶专用于
集合本地文件系统挂载点的目标单元。
systemd-fstab-generator(3)
会自动将 Before=local-fs.target
添加到所有本地挂载点所对应的 mount 单元中。
同时,对于 /etc/fstab
中带有 auto
选项的挂载点,
也会在 local-fs.target
中自动添加
指向这些自动挂载点所对应的 mount 单元的 Wants=
依赖。
machines.target
¶专用于启动所有容器与虚拟机的目标单元。
详见 systemd-nspawn@.service
手册以查看示例。
multi-user.target
¶专用于启动多用户命令行环境(而非图形界面)的目标单元。
通常包含在
graphical.target
中。
所有用于实现多用户命令行环境的单元的
"[Install]
" 小节中,
都应该包含 WantedBy=multi-user.target
指令,
以确保这些单元被添加到了 multi-user.target
单元中。
network-online.target
¶对于那些严格要求
必须存在真实可用的网络连接的单元,
应该在其单元文件中包含
Wants=network-online.target
与
After=network-online.target
指令。
此目标单元意在包含
一个能够将执行流程一直阻塞到网络变为真实可用为止的服务单元。
具体的实现方法取决于网络管理服务所实际使用的网络管理工具。
注意,network-online.target
是一个主动单元(被功能使用者包含而不是被功能提供者包含),
它包含的服务单元可以将执行流程一直阻塞到网络变为真实可用为止。
相反,network.target
是一个被动单元(被功能提供者包含而不是被功能使用者包含),
它不会导致执行流程出现明显的阻塞。
一般来说,
network.target
是系统启动流程中的一部分,
而 network-online.target
则不是(除非确有某些单元依赖于它)。
详情参见
Running
Services After the Network is up
文档。
所有用于挂载远程网络文件系统的 mount 单元都自动包含
Wants=network-online.target
与
After=network-online.target
指令。
注意,仅向网络上其他主机提供服务的守护进程
通常并不依赖于此单元。
Wants=network-online.target
与
After=network-online.target
将被自动添加到所有引用了 "$network
" 的SysV初始化脚本单元中。
注意,此单元仅用于系统启动期间。 系统启动完成之后, 此单元将不再跟踪系统的网络状态。 因此,不能将此单元用作网络连接监视器。
paths.target
¶专用于包含所有应该在系统启动过程中被启动的 path 单元(参见 systemd.path(5) 手册)。
基于路径启动机制的软件包安装的 path 单元的
"[Install]
" 小节中必须包含
WantedBy=paths.target
指令,
以确保这些单元被添加到了 paths.target
单元中。
poweroff.target
¶专用于关闭系统并切断电源的 目标单元。
注意,如果应用程序希望关闭系统并切断电源,
那么不应该直接启动此目标,而应该使用 systemctl poweroff
命令(有可能还需要加上 --no-block
选项)或者直接调用
systemd-logind.service(8) 的
org.freedesktop.login1.Manager.PowerOff D-Bus
方法。
为了保持与SysV的兼容性,
runlevel0.target
是此单元的一个别名(软连接)。
reboot.target
¶专用于重新启动系统的 目标单元。
注意,如果应用程序希望重启系统,
那么不应该直接启动此目标,而应该使用 systemctl reboot
命令(有可能还需要加上 --no-block
选项)或者直接调用
systemd-logind.service(8) 的
org.freedesktop.login1.Manager.Reboot D-Bus
方法。
为了保持与SysV的兼容性,
runlevel6.target
是此单元的一个别名(软连接)。
remote-cryptsetup.target
¶与 cryptsetup.target
类似,
但专用于通过网络访问的加密块设备(也就是
crypttab(8)
中带有 _netdev
标记的加密块设备)。
remote-fs.target
¶专用于集合远程文件系统挂载点的目标单元,其他与
local-fs.target
相似。
After=remote-fs.target
将被自动添加到所有引用了
"$remote_fs
"
的SysV初始化脚本单元中。
rescue.target
¶专用于启动基本系统(挂载所有文件系统)并打开一个救援shell的单元(也就是进入救援模式)。
系统管理员可以使用 systemctl isolate rescue.target 命令进入单用户救援模式。
在此模式下,所有文件系统都保持挂载状态,同时仅运行最基本的系统服务([译者注]除 udevd, journal 之外的其他服务都将被停止)。
注意,与此目标单元类似的 emergency.target
更加精简,既不提供已挂载的文件系统,
也不提供最基本的系统服务。相比于
multi-user.target
来说,此目标单元类似于
single-user.target
runlevel1.target
是此单元的一个别名(软连接),
这样做是为了保持与SysV的兼容性。
内核引导选项 "systemd.unit=rescue.target
"
有一个兼容传统 SysV 风格的
"1
" 等价缩写。
runlevel2.target
, runlevel3.target
, runlevel4.target
, runlevel5.target
¶仅用于兼容传统SysV的
目标单元,
相当于传统的 2, 3, 4, 5 运行级。
通常将 2, 3, 4 作为 multi-user.target
的别名(软连接),
而将 5 作为 graphical.target
的别名(软连接)。
shutdown.target
¶专用于在关机过程中关闭所有的 服务单元。
除非明确设置了
DefaultDependencies=no
,
否则所有在关机时需要关闭的服务都隐含了
Conflicts=shutdown.target
与
Before=shutdown.target
指令。
sigpwr.target
¶专用于 systemd 收到 SIGPWR 信号时启动的目标单元。 当电力发生中断时, 内核或UPS(不间断电源)守护进程将会发送此信号。
sleep.target
¶专用于进入休眠状态的目标单元。
包含在 suspend.target
,
hibernate.target
,
hybrid-sleep.target
之中。
slices.target
¶专用于包含所有在系统启动过程中被启动的 slice 单元(参见
systemd.slice(5)
手册)。该单元默认包含
system.slice
与
-.slice
单元,
并且在这些单元启动之后才能启动(见下文)。
一般不需要直接向 slices.target
中添加 slice 单元。
当某个使用 Slice=
的单元启动之后,将会自动启动指定的 slice 单元。
只应该在需要始终处于活动(active)状态的单元的
"[Install]
" 小节中使用
WantedBy=slices.target
。
此时需要特别注意避免因为上级父 slice 上的自动依赖
导致的依赖循环。
sockets.target
¶专用于包含所有 应该在系统启动过程中被启动的 socket 单元(参见 systemd.socket(5) 手册)。
基于套接字启动机制的软件包
安装的 socket 单元的
"[Install]
" 小节中必须包含
WantedBy=sockets.target
指令,
以确保这些单元被添加到了 sockets.target
单元中。
suspend.target
¶专用于"休眠到内存"的目标单元,
其中包含了 sleep.target
单元(Requires=sleep.target 与 After=sleep.target)。
swap.target
¶专用于集合所有swap分区与swap文件的目标单元,
其他与 local-fs.target
相似。
sysinit.target
¶所有服务单元(明确设置了 DefaultDependencies=no
的除外)都自动隐含了
Requires=sysinit.target
与
After=sysinit.target
依赖。
该单元专用于包含必要的系统初始化服务。
所有包含在该单元中的系统服务都应该明确声明
DefaultDependencies=no
,
并且手动设置所有的依赖关系
(也就是只能假设当前仅存在一个只读根文件系统)。
详见
bootup(7) 手册。
syslog.socket
¶syslog 实例应该监听的套接字单元。 所有用户空间的日志信息都可以从这个套接字中获取。 有关 syslog 整合的更多详情, 参见 Syslog Interface 文档。
system-update.target
, system-update-pre.target
, system-update-cleanup.service
¶专用于离线系统更新的目标单元。如果文件系统上存在 /system-update
,那么
systemd-system-update-generator(8)
将会把启动目标临时重定向到此目标。
详见
systemd.offline-updates(7) 手册。
必须在到达 system-update.target
目标之前完成更新操作,
执行更新操作的服务单元应该主动触发重启动作。
执行更新操作的主单元应该将自身的执行顺序排在
system-update-pre.target
之后,但是不应该包含它。
只在系统更新期间运行、又必须先于实际执行更新操作之前运行的服务,
应该将自身的执行顺序排在 system-update-pre.target
之前,并且必须包含它。
出于安全可靠的考量,如果更新服务未能触发系统重启,并且在到达 system-update.target
目标时,
/system-update
依然存在,那么
system-update-cleanup.service
将会删除此软连接
并重启机器。
timers.target
¶专用于包含所有 应该在系统启动过程中被启动的 timer 单元(参见 systemd.timer(5) 手册)。
基于定时器启动机制的软件包安装的 timer 单元的
"[Install]
" 小节中必须包含
WantedBy=timers.target
指令,
以确保这些单元被添加到了 timers.target
单元中。
umount.target
¶专用于在系统关闭过程中卸载所有需要卸载的文件系统 (无论是手动挂载的还是自动挂载的)。
除非明确设置了
DefaultDependencies=no
,
否则所有 mount 单元都隐含了
Conflicts=umount.target
指令。
某些特殊的目标单元 专门用于表明系统中出现了特定类型的设备。 这些特殊的目标单元可用于 在插入某种类型的设备时自动启动对应的服务。
bluetooth.target
¶如果有某个蓝牙控制器被插入或变得可用, 那么该目标单元 将会被自动启动。
此目标单元可以通过包含蓝牙管理服务, 以实现在发现蓝牙设备时自动启动蓝牙管理服务。
printer.target
¶如果有某个打印机被插入或变得可用, 那么该目标单元将会被自动启动。
此目标单元可以通过包含打印机管理服务, 以实现在发现打印机时自动启动打印机管理服务。
smartcard.target
¶如果有某个智能卡控制器被插入或变得可用, 那么该目标单元 将会被自动启动。
此目标单元可以通过包含智能卡管理服务, 以实现在发现智能卡设备时自动启动智能卡管理服务。
sound.target
¶如果有某个声卡被插入或变得可用, 那么该目标单元 将会被自动启动。
此目标单元可以通过包含音频管理服务, 以实现在发现声卡时自动启动音频管理服务。
为了确保在系统启动过程中,可选的服务单元能够以正确的顺序启动,
专门定义了一些目标单元。
这些目标单元并不是启动流程的默认部分,
除非被明确的包含在实际实现某个功能的服务单元中。
注意,这些被动目标单元通常并不是被功能的使用者包含,而是被功能的提供者包含。
也就是说,需要使用某功能的服务单元(使用者),
应该将自身的启动顺序排在这些目标单元之后,
而不是包含这些目标单元。
而提供某功能的服务单元(提供者),
应该将自身的启动顺序排在这些目标单元之前,
并且通过 Wants=
选项包含这些目标单元。
注意,被动单元只能被当作依赖关系包含在其他单元中,而不能被直接手动启动。
也就是说类似
"systemctl start time-sync.target
"
这样的命令会失败。
因为被动单元存在的意义仅仅是为了确保正确的启动顺序。
cryptsetup-pre.target
¶那些必须在加密块设备可用之前启动的服务单元 可以包含此目标。 当此目标单元启动后, 所有的加密块设备就都可以访问了。 因为关机流程的顺序与开机流程正好相反, 所以此目标单元还可用于确保特定的服务单元 仅在所有的加密快设备关闭之后 再停止。
getty-pre.target
¶一个特殊的被动目标单元。
如果你想让某个单元
在启动 getty
之前
就可以使用控制台,
那么可以在该单元中明确设置 Wants=getty-pre.target
local-fs-pre.target
¶此目标单元
自动排在
所有需要自动挂载的本地文件系统挂载点
(带有 auto
挂载选项)之前。
可用于确保
在挂载本地文件系统之前
启动某些单元。
network.target
¶此目标单元用于表明网络可用,
但是由于其定义的脆弱性,
它事实上只有一个用途:
在关机时,
确保所有包含 After=network.target
的单元
都在关闭网络(无论网络实际处于何种状态)之前被优先关闭。
因此对于那些需要在关闭时访问网络的服务来说,
应该将其自身排在此目标单元之后(但是不要包含此目标单元)。
参见
Running
Services After the Network is up
文档以及上文的
network-online.target
目标单元。
network-pre.target
¶此目标单元可用于 包含在所有想要在网络可用之前启动的服务单元中(例如设置防火墙)。 所有的网络管理软件都应该 排在此目标单元之后, 但却不应该包含它。
nss-lookup.target
¶专用于标记所有主机与网络的名字查找服务都已可用的目标单元。
注意,这不包括 UNIX 用户/组的名字查找功能(这是
nss-user-lookup.target
的功能)。
所有依赖于主机与网络的名字查找服务的服务单元,都必须排在该目标单元之后启动,
但却不应该包含它。
After=nss-lookup.target
将被自动添加到所有引用了 "$named
" 的SysV初始化脚本单元中。
nss-user-lookup.target
¶专用于标记所有常规 UNIX 用户与组的名字查找服务都已可用的目标单元。
注意,这不包括主机/网络的名字查找功能(这是
nss-lookup.target
的功能)。
所有依赖于用户与组的名字查找服务的服务单元,都必须排在该目标单元之后启动,
但却不应该包含它。
所有提供用户与组数据的服务都应该先于该目标单元之前启动,并且应该包含此单元。
注意,该目标单元仅适用于普通用户与组。
因为在系统启动的早期阶段就已经可以解析系统用户与组(并不需要此目标单元的帮助),
所以也就不需要考虑与此单元之间的顺序。
remote-fs-pre.target
¶此目标单元自动排在
所有文件系统挂载点(见上文)
以及带有 _netdev
标记的加密设备
之前。
可用于确保
在远程加密设备与所有文件系统挂载点都没有就绪之前启动某些单元。
注意,此单元并不是系统初始化过程中的一部分(除非在某些单元中包含了
Wants=remote-fs-pre.target
依赖)。
如果某单元想要被第一个启动的远程挂载点包含,
那么它应该使用前文的 network-online.target
目标单元。
rpcbind.target
¶专用于标记 portmapper/rpcbind 服务可用的单元。
提供 portmapper/rpcbind 服务的单元应该包含此目标单元,
并将其自身排在此单元之前启动。
After=rpcbind.target
将被自动添加到所有引用了
"$portmap
" 的SysV初始化脚本单元中。
time-sync.target
¶此目标单元用于包含
同步系统时钟的服务单元(例如NTP客户端),
这些同步系统时钟的服务单元应该先于此目标单元启动。
所有依赖于正确系统时间的服务单元
都应该在此目标单元之后启动,
但是不应该包含此单元。
After=time-sync.target
将被自动添加到所有引用了
"$time
" 的SysV初始化脚本单元中。
下面四个特殊的 ".slice
" 单元,
构成了为服务、用户、虚拟机/容器分配资源的基础层次结构。参见
systemd.slice(7)
以详细了解 slice 单元。
-.slice
¶这是所有 slice 层次结构的"根",但通常并不直接包含其他单元, 而是用于设置整个 slice 层次结构的默认值。
system.slice
¶默认情况下,所有由 systemd 系统实例启动的系统服务 都包含在这个 slice 中。
user.slice
¶默认情况下,所有以用户身份启动的进程与服务
(包括由 systemd 用户实例启动的)
都包含在这个 slice 单元中。而该单元又包含在
systemd-logind.service
单元中。
machine.slice
¶默认情况下,
所有通过 systemd-machined 注册的虚拟机与容器
都包含在这个 slice 单元中。而该单元又包含在
systemd-machined.service
单元中。
当 systemd 以用户实例运行时,
将可以使用下面的特殊单元
(含义见上文):
exit.target
,
default.target
,
shutdown.target
,
sockets.target
,
timers.target
,
paths.target
,
bluetooth.target
,
printer.target
,
smartcard.target
,
sound.target
.
graphical-session.target
¶此目标单元将在运行任意图形会话时启动,用于在图形会话结束时,
停止那些仅可用于图形(X, Wayland 等)会话的用户服务。
这些用户服务应该在单元文件的 "[Unit]
"
小节中包含 "PartOf=graphical-session.target
" 设置。
用于特定会话的目标单元(例如
gnome-session.target
) 可以通过
"BindsTo=graphical-session.target
"
来启动和停止 "graphical-session.target
" 目标。
会话目标单元通过
"Wants=
" 与 "Requires=
" 依赖来确定所要启动的服务。
对于可以独立启动的服务,应该使用 ".wants/
" 与
".requires/
" 目录中软连接来引用(参见
systemd.unit(5)
手册)。这些软连接可以直接包含在软件包内,
也可以在软件包安装之后使用例如 "systemctl add-wants
" 这样的命令动态创建(参见
systemctl(1) 手册)。
例 1. 将 Nautilus 作为 GNOME 会话的一部分
"gnome-session.target
" 将 Nautilus 作为顶级服务包含进来:
[Unit] Description=User systemd services for GNOME graphical session Wants=nautilus.service BindsTo=graphical-session.target
当会话停止时,"nautilus.service
" 也将停止:
[Unit] Description=Render the desktop icons with Nautilus PartOf=graphical-session.target [Service] …
graphical-session-pre.target
¶此目标单元用于包含
为图形会话设置环境变量或全局配置的服务单元。
例如 SSH/GPG 代理(需要为所有桌面进程设置环境变量)、
或者在系统更新之后迁移过时 d-conf 配置的服务单元(必须在启动新版程序之前完成迁移操作)。
此目标单元必须在启动图形会话(例如
gnome-session.target
)之前完成启动。