man 中对 systemd 单元的定义有点不清楚:https ://www.freedesktop.org/software/systemd/man/systemd.unit.html
如果一个单元
foo.service
包含一个设置Before=bar.service
并且两个单元都正在启动,则bar.service
启动将延迟到foo.service
启动。[...]After=
是 的倒数Before=
,即同时After=
确保配置的单元在列出的单元完成启动后启动, 同时确保配置的单元在列出的单元Before=
启动之前完全启动。
可以说我有a.service
和b.service
。我想a.service
完全启动之前,b.service
因为b.service
依赖于a.service
.
阅读上述手册页后,我找不到任何关于是否:
- 您只需要
Before=b.service
在a.service
单元文件中指定 - 您只需要
After=a.service
在b.service
单元文件中指定 - 您需要在 单元文件和单元文件
After=a.service
中b.service
Before=b.service
a.service
我需要为 systemd 单元文件声明哪些依赖项?有关系吗?
您只需要其中一个
After=
或Before=
一对单元。您可能更喜欢手册页中的以下内容systemctl
:使用这个选项
list-dependencies
来检查你认为 systemd 应该做什么。例如如果您正在转换,您可能会从这里
upstart
获得一些提示,并且您可以阅读此处列出的所有博客,标题为管理员博客系列的 systemd。