一、概念
- 除了crond之外,我們還可以使用systemd這個好用的服務來設置系統任務
- systemd可以使用timers.target來協助定期處理各種任務
二、systemd.timer的優勢
- ①所有的systemd服務所產生的信息都會被記錄(log),因此比crond在debug上面要更清楚方便
- ②各項timer的任務可以跟systemd的服務相結合
- ③各項timer的任務可以跟control group(cgroup,用來替換/etc/secure/limit.conf的功能)結合,來限制任務的資源利用
- ④systemd的服務檢測時間可以精確到秒甚至毫秒
三、缺點
- 默認沒有email功能(不過可以自己寫一個)
- 沒有類似於anacron的一段時間內的隨機取樣功能
四、設置的要求
- ①操作系統的timer.target一定要啓動
- ②要有個sname.service的服務存在(sname是你自己指定的名稱)
- ③要有個sname.timer的時間啓動服務存在
五、[Timer]處的設置值
OnActiveSec | 當 timers.target 啓動多久之後才執行這個unit |
OnBootSec | 當開機完成後多久之後才執行 |
OnStartupSec | 當 systemd第一次啓動之後過多久才執行 |
OnUnitActiveSec | 這個 timer 配置文件所管理的那個 unit 服務在最後一次啓動後,隔多久後再執行一次的意思 |
OnUnitInactiveSec | 這個 timer 配置文件所管理的那個 unit 服務在最後一次停止後,隔多久再執行一次的意思 |
OnCalendar | 使用實際時間 (非循環時間) 的方式來啓動服務的意思。至於時間的格式後續再來談 |
Unit | 一般來說不太需要設定,因此如同上面剛剛提到的,基本上我們設定都是 sname.server + sname.timer,那如果你的 sname 並不相同時,那在 .timer 的文件中,就得要指定哪一個service unit |
Persistent | 當使用 OnCalendar 的設定時,指定該功能要不要持續進行的意思。通常是設定爲 yes ,比較能夠滿足類似 anacron的功能 |
六、使用於 OnCalendar 的時間格式
- 語法:英文周名 YYYY-MM-DD HH:MM:SS
- 範例:Thu 2015-08-13 13:40:00
①你也可以直接使用間隔時間來處理,常見的間隔時間單位有:
- us 或 usec:微秒 ( 秒)
- ms 或 msec:毫秒 (秒)
- s、sec、second、seconds
- m、min、minute、minutes
- h、hr、hour、hours
- d、day、days
- w、week、weeks
- month、months
- y、year、years
- 通常英文的寫法爲:小單位在前面,大單位在後面。(秒、再分、再小時、再天數....)
使用案例
- 隔3小時:3h 或 3hr 或 3hours
- 隔300分鐘過10 秒::10s 300m
- 隔5天又100 分鐘:100m 5day
②你也可以使用英文常用的口語化日期代表
- 假設今天是:2015-08-13 13:50:00
now | Thu 2015-08-13 13:50:00 |
today | Thu 2015-08-13 00:00:00 |
tomorrow | Thu 2015-08-14 00:00:00 |
hourly | --* *:00:00 |
daily | --* 00:00:00 |
weekly | Mon --* 00:00:00 |
monthly | --01 00:00:00 |
+3h10m | Thu 2015-08-13 17:00:00 |
2015-08-16 | Sun 2015-08-16 00:00:00 |
七、一個循環時間運行案例
待續。。。。。。。