Cron

Systemd 計時器 OnCalendar 每分鐘以 5 結尾

  • February 19, 2022

使用OnCalendarsystemd 計時器,我可以創建這樣的東西,每 5 分鐘執行一次。

OnCalendar=*:0/5

是否可以僅在 5 (00:05, 00:15, 00:25…)結束的每一分鐘執行它?

和/或每分鐘僅以 0 (00:00, 00:10, 00:20…)結尾?

主要目標是在 2 台伺服器上有一個計時器,因此每個伺服器都在空閒時間執行;如果一個失敗,另一個將至少每 10 分鐘執行一次(而不是 5 分鐘)。

解決方案:

OnCalendar=*:5/10

這相當於*:5,15,25,35,45,55

為了確定結果,請使用以下內容:

systemd-analyze calendar --iterations=8 '*:5/10' | grep Iter
      Iter. #2: Sun 2022-02-20 00:25:00 CET
      Iter. #3: Sun 2022-02-20 00:35:00 CET
      Iter. #4: Sun 2022-02-20 00:45:00 CET
      Iter. #5: Sun 2022-02-20 00:55:00 CET
      Iter. #6: Sun 2022-02-20 01:05:00 CET
      Iter. #7: Sun 2022-02-20 01:15:00 CET
      Iter. #8: Sun 2022-02-20 01:25:00 CET

我不確定這是否因發行版而異。無論如何,我使用的是 RHEL8。試試這個:

[Timer]
OnCalendar=*-*-* *:05,15,25,35,45,55:00

使用該systemctl daemon-reload命令確保 systemd 知道這些更改。

注意:您不應編輯 /usr/lib/systemd 目錄下的文件。使用 systemd,您可以將單元文件複製到 /etc/systemd/system 目錄並編輯該副本。

引用自:https://serverfault.com/questions/1057977