Systemd
Systemd:如何在所需服務後執行計時器?
目前,我有這個systemd計時器(
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
)啟動,而不是在啟動時啟動計時器。所以鏈條是:boot >
my-preceding.service
>my.timer
>my-subsequent.service
。我怎樣才能做到這一點?
編輯:
我試圖找出是否可以在計時器中使用
After=
和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
是的,使用
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.