Systemd:如何让计时器在所需服务后运行?

Systemd:如何让计时器在所需服务后运行?

目前,我有这个系统计时器 ( my.timer):

[Unit]
Description=My Timer

[Timer]
OnActiveSec=30 
Unit=my-subsequent.service

[Install]
WantedBy=multi-user.target

由于以下原因,计时器被设置为在启动时激活:systemctl enable my.timersystemctl start my.timer

激活后,计时器会等待 30 秒,然后启动服务my-subsequent.service

然而,我希望它等待,而不是让计时器在启动时激活另一项服务( my-preceding.service) 在启动时激活。

这样链条就是:启动> my-preceding.service> my.timer> my-subsequent.service

我怎样才能做到这一点?


编辑:

我试图寻找是否可以在计时器中使用After=and Requires=,但没有找到任何东西。然而乍一看这似乎确实有效。这是一个可以接受的解决方案吗?

[Unit]
Description=My Timer
After=my-preceding.service
Requires=my-preceding.service

[Timer]
OnActiveSec=30 
Unit=my-subsequent.service

[Install]
WantedBy=multi-user.target

答案1

是的,使用After=, 和Requires=是订购服务的正确方法。您可能还需要注意,如果指定的服务Requires失败,您的服务也会失败。从联机帮助页:

Often, it is a better choice to use Wants= instead of Requires= in order to 
achieve a system that is more robust when dealing with failing services.

相关内容