一、概念
- 除了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 |
七、一个循环时间运行案例
待续。。。。。。。