我有一个普遍的问题。*.service
在特定*.service
成功启动后如何启动 systemd 单元?
更具体的问题是,我如何在开始website.service
后才mongodb.service
开始?换句话说website.service
应该取决于mongodb.service
.
在 [Unit] 部分下的 .service 文件中:
[Unit]
Description=My Website
After=syslog.target network.target mongodb.service
重要的部分是mongodb.service
手册页对其进行了描述,但是由于格式化,乍一看并不那么清楚
After=
依赖项仅在服务包括After=
和服务包括的After=
都计划作为启动的一部分启动时才有效。
前任:
a.service
[Unit]
After=b.service
这样,如果两者a.service
都b.service
启用,则 systemd 将b.service
在 之后排序a.service
。
如果我没有误解,您要问的是如何在启动b.service
时a.service
启动,即使b.service
未启用。
用于此的指令是Wants=
或Requires=
低于[Unit]
。
website.service
[Unit]
Wants=mongodb.service
After=mongodb.service
Wants=
和的区别在于Requires=
with Requires=
, 启动失败b.service
会导致 的启动a.service
失败,而 with Wants=
,a.service
即使b.service
失败也会启动。这在的手册页上有.unit
详细说明。