Service 在特定服务之后启动systemd服务?

Service 在特定服务之后启动systemd服务?,service,systemd,Service,Systemd,我有一个一般性问题。在特定的*.服务成功启动后,如何启动系统D装置*.服务 更具体的问题是,只有在mongodb.service启动之后,我如何启动website.service?换句话说,website.service应该依赖于[Unit]部分下.service文件中的mongodb.service: [Unit] Description=My Website After=syslog.target network.target mongodb.service 重要的部分是mongodb.s

我有一个一般性问题。在特定的
*.服务
成功启动后,如何启动系统D装置
*.服务


更具体的问题是,只有在
mongodb.service
启动之后,我如何启动
website.service
?换句话说,
website.service
应该依赖于[Unit]部分下.service文件中的
mongodb.service

[Unit]
Description=My Website
After=syslog.target network.target mongodb.service
重要的部分是
mongodb.service

手册页对此进行了描述,但由于格式问题,第一眼就看不清了


After=
依赖关系仅在包含
After=
的服务和
After=
包含的服务都计划作为启动的一部分启动时有效

例:

这样,如果
a.service
b.service
都启用了
a.service
之后,系统D将订购
b.service

如果我没有误解的话,您要问的是当
a.service
启动时如何启动
b.service
,即使
b.service
未启用

这方面的指令是
[Unit]
下的
Wants=
Requires=

website.service
[Unit]
Wants=mongodb.service
After=mongodb.service

Wants=
Requires=
之间的区别在于,使用
Requires=
时,启动
b.service
失败将导致启动
a.service
失败,而使用
Wants=
时,
a.service
将启动,即使
b.service
失败。这将在上详细解释

这个问题属于ServerFault,不是吗?@Rémi在两个网站上都没关系!:)@不,只是3.5年后你才回答,这不是一个关于主题的问题。这与编程无关。SF或更好的Unix/Linux.SE更合适。Stack Overflow是一个用于编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。我们的mongod服务启动了一个非常大的数据库。后续服务无法正确启动,因为mongo在启动后似乎需要更多时间加载数据库。因此,我们的第二个服务启动但失败,因为mongo已成功启动,但尚未加载数据库。也许一个延迟可能会帮助……系统是否有可能处理下面的SnEnvio。考虑多个服务A、B、C、D。如果A存在,我希望B,C,D只在A之后开始,否则如果A不存在,B,C,D可以按任意顺序开始。请help@achilles你能在不需要的系统上创建一个假的服务吗。通过这种方式,B、C、D的依赖关系可以保持简单
After=website.service
表示“在website.service之后执行我的单元!”。这就是文档中解释的内容:。我假设“列出的单位”是“After=”右侧的单位。这样,如果a.service和b.service都启用,那么systemd将在a.service之后订购b.service。你不是说另一种方式吗<代码>交换(a,b)
website.service
[Unit]
Wants=mongodb.service
After=mongodb.service