anatoly techtonik Asked: 2018-11-27 21:47:00 +0800 CST2018-11-27 21:47:00 +0800 CST 2018-11-27 21:47:00 +0800 CST systemd 中的自动启动服务是否必须使用 [Install] 部分? 772 我正在阅读https://www.freedesktop.org/software/systemd/man/systemd.service.html[Install]如果服务自动启动需要部分,则找不到信息。 systemd 1 个回答 Voted Best Answer filbranden 2018-11-27T21:53:47+08:002018-11-27T21:53:47+08:00 使某些程序在启动时执行的标准方法systemd是为其创建.service文件,将该文件放入相应的目录并运行systemctl enable <service>以启用它以进行启动序列。[Install]部分在这里是强制性的,因为它告诉systemd您应该在启动过程中的哪个时刻启动您的服务。您的进程应该链接到一些通用的引导目标,例如multi-user.targetor graphical.target,或者链接到一个特殊用途的目标(例如network-online.target),或者一个自定义的本地目标。 例子: [Install] WantedBy=multi-user.target 这里systemd将注入您的服务作为multi-user.target. systemd将在启动目标时启动您的服务multi-user。 systemd 读取其配置目录中的文件(或符号链接)以查看应该以什么顺序启动哪些单元。systemctl enable为它已经知道的服务创建这样的符号链接,并将这些符号链接放置在应该启动服务的引导过程中的点(例如,在特殊的multi-user.target.wants/子目录中)。 还有另一种方式是操作系统如何systemd在启动时启动它自己的服务。这不是你应该做的事情,但因为问题是关于[Install]部分...... 有些systemd单元称为“静态”单元,它们不是由systemctl enable(或systemctl disable)管理的。它们在引导时通过/usr/lib/systemd/system/(而不是/etc/systemd/system/)中的硬编码符号链接启动,如果您在查看系统中的单元时遇到它们......知道它们没有[Install]部分。 (有关静态单位的更多详细信息,您可以在此论坛帖子中查看讨论。)
使某些程序在启动时执行的标准方法
systemd
是为其创建.service
文件,将该文件放入相应的目录并运行systemctl enable <service>
以启用它以进行启动序列。[Install]
部分在这里是强制性的,因为它告诉systemd
您应该在启动过程中的哪个时刻启动您的服务。您的进程应该链接到一些通用的引导目标,例如multi-user.target
orgraphical.target
,或者链接到一个特殊用途的目标(例如network-online.target
),或者一个自定义的本地目标。例子:
这里
systemd
将注入您的服务作为multi-user.target
.systemd
将在启动目标时启动您的服务multi-user
。systemd 读取其配置目录中的文件(或符号链接)以查看应该以什么顺序启动哪些单元。
systemctl enable
为它已经知道的服务创建这样的符号链接,并将这些符号链接放置在应该启动服务的引导过程中的点(例如,在特殊的multi-user.target.wants/
子目录中)。还有另一种方式是操作系统如何
systemd
在启动时启动它自己的服务。这不是你应该做的事情,但因为问题是关于[Install]
部分......有些
systemd
单元称为“静态”单元,它们不是由systemctl enable
(或systemctl disable
)管理的。它们在引导时通过/usr/lib/systemd/system/
(而不是/etc/systemd/system/
)中的硬编码符号链接启动,如果您在查看系统中的单元时遇到它们......知道它们没有[Install]
部分。(有关静态单位的更多详细信息,您可以在此论坛帖子中查看讨论。)