目前,我有这个系统计时器 ( my.timer
):
[Unit]
Description=My Timer
[Timer]
OnActiveSec=30
Unit=my-subsequent.service
[Install]
WantedBy=multi-user.target
由于以下原因,计时器被设置为在启动时激活:systemctl enable my.timer
和systemctl 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.