Cron
systemd - 模仿 anacron 行為的計時器單元
我需要為經常關閉的機器(例如經典桌面設置)編寫一個計時器單元。這個定時器單元需要定期啟動,但不是很頻繁(例如每週、每月)。
我確實找到了一些方法,但它們都不適合:
- 根據手冊頁,如果配置的時間點在過去,則只有
OnBootSec
和指令將被啟動。OnStartupSec
我還發現了一些使用這些組合OnActiveSec
定義正常事件的範例。問題是:每次機器啟動時,計時器都會啟動配置的單元。如果你有一個應該每週/每月執行一次的計時器,那就太頻繁了。例如:我不想讓我的日誌每天輪換 3 次!- 用
OnCalendar
指令解決。如果機器在配置的時間點(通常是午夜,因為如果您在時間規範中省略小時,它預設為 00:00:00)關閉電源,則下次啟動後將不會啟動計時器。至少我是這樣得到的。是對的嗎?如果配置的時間已經過去,是否會在下次啟動後立即啟動帶有日曆事件的計時器?如果沒有,是否有解決方法來獲得這種行為?
此功能已在 systemd (ver >= 212) 中使用該指令實現
Persistent=
,因此您只需在使用指令確定執行作業的日期/時間時插入Persistent=true
單元文件。OnCalendar=
持久=
接受一個布爾參數。如果為真,服務單元上次觸發的時間將儲存在磁碟上。當定時器被啟動時,如果在定時器不活動期間它至少被觸發一次,則立即觸發服務單元。這對於在機器關閉時趕上錯過的服務執行很有用。請注意,此設置僅對使用 OnCalendar= 配置的計時器有影響。