【问题标题】:Start systemd service after specific service? [closed]在特定服务之后启动 systemd 服务? [关闭]
【发布时间】:2014-03-16 20:13:45
【问题描述】:

我有一个一般性问题。在特定的*.service 成功启动后,如何启动系统单元*.service

更具体的问题是,我如何在mongodb.service 启动后才启动website.service?换句话说,website.service 应该依赖于mongodb.service

【问题讨论】:

  • 这个问题属于ServerFault,没有?
  • @Rémi 两个站点都可以! :)
  • @AnonymousPenguin 不,只是在您回复之前 3.5 年,这不是 SO 的主题问题。这与编程无关。 SF 或者更好的 Unix/Linux.SE 会更合适。
  • Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super UserUnix & Linux Stack Exchange 会是一个更好的提问地点。
  • 可能相关的ServerFault问题:serverfault.com/questions/812492/…

标签: service systemd


【解决方案1】:

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

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

重要的部分是mongodb.service

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

systemd.unit - well formatted

systemd.unit - not so well formatted

【讨论】:

  • 我们的 mongod 服务启动了一个非常大的数据库。后续服务无法正确启动,因为启动后似乎 mongo 需要更多时间来加载数据库。所以我们的第二个服务启动但失败了,因为 mongo 已经成功启动但还没有加载数据库。也许延迟会有所帮助...
  • systemd 服务是否可以处理以下场景。考虑多个服务 A、B、C、D 。如果 A 存在,我希望 B、C、D 仅在 A 之后启动,否则如果 A 不存在 B、C、D 可以按任何顺序启动。请帮忙
  • @achilles 你能在不需要 A 的系统上创建一个假服务 A。这样B、C、D的依赖关系就可以保持简单。
【解决方案2】:

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

例如:

a.service
[Unit]
After=b.service

这样,如果a.serviceb.service启用,那么systemd 将在a.service 之后排序b.service

如果我没有误解,您要问的是如何在a.service 启动时启动b.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 失败。这在the man page of .unit 上有详细解释。

【讨论】:

  • 我相信事实与这个答案完全相反。 After=website.service 表示“在 website.service 之后执行我的单元!”。这就是文档中解释的内容:"After= ensures that the configured unit is started after the listed unit finished starting up"。我假设“列出的单位”是“After=”右侧的单位。
  • "这样的话,如果a.service和b.service都开启了,那么systemd会在a.service之后订购b.service。"你的意思不是反过来吗? swap(a, b)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-12
  • 1970-01-01
  • 1970-01-01
  • 2016-04-09
  • 2020-05-11
  • 2021-01-08
  • 1970-01-01
相关资源
最近更新 更多