103

我有一个普遍的问题。*.service在特定*.service成功启动后如何启动 systemd 单元?

更具体的问题是,我如何在开始website.service后才mongodb.service开始?换句话说website.service应该取决于mongodb.service.

4

2 回答 2

139

在 [Unit] 部分下的 .service 文件中:

[Unit]
Description=My Website
After=syslog.target network.target mongodb.service

重要的部分是mongodb.service

手册页对其进行了描述,但是由于格式化,乍一看并不那么清楚

systemd.unit - 格式正确

systemd.unit - 格式不太好

于 2014-02-17T14:45:11.370 回答
57

After=依赖项仅在服务包括After=和服务包括的After=都计划作为启动的一部分启动时才有效。

前任:

a.service
[Unit]
After=b.service

这样,如果两者a.serviceb.service启用则 systemd 将b.service在 之后排序a.service

如果我没有误解,您要问的是如何在启动b.servicea.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详细说明。

于 2014-11-16T13:09:41.017 回答