Systemd

每 15 分鐘的 systemd 計時器

  • August 13, 2021

我正在嘗試製作一個每 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後開始計算時間(或者,更一般地說,該單元已停用)。

引用自:https://unix.stackexchange.com/questions/126786