我有一个一般性的问题。成功启动*.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.serviceb.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)