我在读https://www.freedesktop.org/software/systemd/man/systemd.service.html[Install]
如果服务自动启动需要部分,则无法找到信息。
答案1
使某些程序在启动时执行的标准方法systemd
是为其创建.service
文件,将该文件放入对应目录并systemctl enable <service>
跑到使能够它用于启动序列。[Install]
此处的部分是强制性的,因为它告诉您systemd
应该在启动过程中的哪个时刻启动您的服务。你处理应该链接到一些通用启动目标例如multi-user.target
或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]
(你可以看到本论坛帖子中的讨论有关静态单位的更多详细信息。)