我有一个一般性的问题。成功启动*.service
特定单元后,如何启动systemd单元*.service
?
更具体的问题是,如何website.service
仅在启动后才能mongodb.service
启动?换句话说website.service
应该依靠mongodb.service
。
我有一个一般性的问题。成功启动*.service
特定单元后,如何启动systemd单元*.service
?
更具体的问题是,如何website.service
仅在启动后才能mongodb.service
启动?换句话说website.service
应该依靠mongodb.service
。
Answers:
在[服务]部分下的.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=
是,使用Requires=
,启动失败b.service
会导致启动a.service
失败,而使用Wants=
,a.service
即使b.service
失败也会启动。在的手册页中.unit
对此进行了详细说明。
After=website.service
表示“在website.service之后执行我的部门!”。这就是文档中所解释的:“ After =确保在列出的单元完成启动后启动配置的单元”。我假设“列出的单位”是“ After =”右侧的单位。
swap(a, b)