带计时器的 systemd 单元“Before=”

带计时器的 systemd 单元“Before=”

在我的系统中,我有 b.service 由 b.timer 激活。我想要另一个在 b.service 之前启动的服务 (a.service)。我无法更改 b.service 或 b.timer,因为它们不是我的。我已经放入Before=b.servicea.service 但计时器启动 b.service 而没有启动 a.service。

答案1

您可以标记a.serviceRequiredBy 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之前开始。

相关内容