在我的系统中,我有 b.service 由 b.timer 激活。我想要另一个在 b.service 之前启动的服务 (a.service)。我无法更改 b.service 或 b.timer,因为它们不是我的。我已经放入Before=b.service
a.service 但计时器启动 b.service 而没有启动 a.service。
答案1
您可以标记a.service
为RequiredBy
b.service
.
使a.service
看起来像:
[Unit]
Before=b.service
[Service]
Type=exec
ExecStart=...
[Install]
RequiredBy=b.service
进而:
systemctl enable a.service
现在无论何时b.service
开始——无论是通过计时器还是通过systemctl start
——你的新的a.service
都会首先开始。
答案2
该Before
指令仅在启动期间使用。它仅用于确定服务的顺序。
为了实现您的需要,请将以下部分添加到您的a.service
:
[Install]
WantedBy=b.service
然后运行:
systemctl enable a.service
这将确保在b.service
应该开始的时间a.service
之前开始。