fil*_*den 6

使某些程序在启动时执行的标准方法systemd是为其创建.service文件,将该文件放入相应目录并运行systemctl enable <service>启用它以启动序列。[Install]部分在这里是强制性的,因为它告诉systemd您应该在启动过程中的哪个时刻启动您的服务。您的进程应该链接到一些通用引导目标,例如multi-user.targetgraphical.target,或特殊目的目标(例如network-online.target),或自定义本地目标。

例子:

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

这里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]节。

(您可以在此论坛帖子中查看有关静态单位的更多详细信息的讨论。)

  • 我用我想知道但不敢问的所有信息编辑了你的答案。请检查一下我是否误导了任何人。我认为符号链接在我理解高级逻辑之前是太低级的细节,所以我直到最后才忽略它。 (2认同)