我有一台 RPi3。由于它没有硬件时钟,所以我有一个服务可以tlsdate
与本地服务器同步时间。(每次启动时都会触发该服务。由于经常断电,所以会定期触发)。
我还有一个mysync.timer
启动的计时器mysync.service
,用于同步我的日历。它使用OAuth
,如果时间不匹配,就会出错。
每次运行之前,有什么办法可以启动tlsdate.service
吗?mysync.service
mysync.service
我查看了 systemd 文档并找到了Before=
和After=
,但我不确定如何将其与计时器一起使用。
答案1
您需要做的就是在中添加一个After
and :Wants
mysync.service
After=tlsdate.service
Wants=tlsdate.service
这将导致在tlsdate.service
之前启动mysync.service
。如果你想确保tlsdate
完全的之前mysync
,您可能需要确保tlsdate
是Type=oneshot
,而不是默认的Type=simple
。
两者的区别在于,After
如果两者同时启动,则指定顺序,而当启动时则Wants
导致tlsdate
启动mysync
。因此,您需要两者,以指定顺序和依赖关系。
如果你想要一个硬依赖,即mysync
应该失败如果tlsdate
无法启动,那么您应该使用Requires
:
After=tlsdate.service
Requires=tlsdate.service
您应该能够完全忽略计时器。计时器将启动,但您真正想要的是首先启动的mysync.service
依赖项,无论它是否通过计时器触发。mysync.service
tlsdate.service