Systemd
每 15 分鐘的 systemd 計時器
我正在嘗試製作一個每 15 分鐘執行一次的 systemd 計時器。現在我有:
timer-fifteen.timer
:[Unit] Description=15min timer [Timer] OnBootSec=0min OnCalendar=*:*:0,15,30,45 Unit=timer-fifteen.target [Install] WantedBy=basic.target
timer-fifteen.target
:[Unit] Description=15min Timer Target StopWhenUnneeded=yes
這一遍又一遍地執行,沒有停止。是否需要
*:0,15,30,45:*
改為?我怎樣才能使這項工作?
您的語法轉換為每 15秒,如果您想要每 15分鐘,IMO 最易讀的方式是:
OnCalendar=*:0/15
與您在問題中使用的最相似的答案是:
OnCalendar=*:0,15,30,45
更多資訊:
根據systemd.time,設置
OnCalendar=*:0/15
準確地翻譯為
OnCalendar=*:0,15,30,45
IE。它會在整點以及一刻鐘、半點鐘和一刻鐘準確地啟動該裝置。
根據您的服務,這可能不是您想要的,也不是您在所有情況下都需要的。
每 15 分鐘執行一次的計時器——例如在 1:02、1:17、1:32、1:47、2:02……——總是取決於它上次執行的時間——可以通過systemd.定時器設置
OnUnitActiveSec=15min
現在,您還希望該單元在啟動後啟動一段時間(除非您想手動啟動該單元或具有執行此操作的依賴項),因此您應該指定
OnBootSec=10min OnUnitActiveSec=15min
讓設備在啟動後 10 分鍾啟動,然後在第一次啟動後每 15 分鍾啟動一次。
此外,還有一個設置會在服務停止
OnUnitInactiveSec
後開始計算時間(或者,更一般地說,該單元已停用)。