助定期处理各种任务!
那么,除了
crond
之外,如何使用
systemd
内½的
time
来处理各种任务呢?
这就是本小½的重点啰!
.
systemd.timer
的优势
archlinux
的官网
wiki
上面有提到,为啥要使用
systemd.timer
呢?
.
由于所有的
systemd
的服务产生的信息都会被纪录
(log)
,因此比
crond
debug
上面要更清楚方便的多;
.
各项
timer
的工作可以跟
systemd
的服务相½合;
.
各项
timer
的工作可以跟
control group (cgroup
,用来取代
/etc/secure/limit.conf
的功能
)
½合,来限制该工
作的资源利用
虽然还是有些弱点啦~例如
systemd
timer
并没有
email
通知的功能
(
除非自己写一个
)
,也没有
类似
anacron
的一段时间内的随机取样功能
(random_delay)
不过,总体来说,还是挺不错的!此
外,相对于
crond
最小的单位到分,
systemd
是可以到秒甚至是毫秒的单位哩!相当有趣!
.
任务需求
基本上,想要使用
systemd
timer
功能,你必须要有几个要件:
.
系统的
timer.target
一定要启动
.
要有个
sname.service
的服务存在
(sname
是你自己指定的名称
)
.
要有个
sname.timer
的时间启动服务存在
满足上面的需求就
OK
了!有没有什么案例可以来实作看看?这样说好了,我们上个小½不是才自
己做了个
backup.service
的服务吗?那么能不能½这个
backup.service
用在定期执行上面呢?好啊!
那就来测试看看!
.
sname.timer
的设定值
你可以到
/etc/systemd/system
底下去½立这个
*.timer
档,那这个文件的内容要项有哪些东西呢?基
本设定主要有底下这些:
(man systemd.timer & man systemd.time)
[Timer]
部份
设定参数
参数意义说明
OnActiveSec
timers.target
启动多久之后才执行这只
unit
OnBootSec
当开机完成后多久之后才执行
OnStartupSec
systemd
第一次启动之后过多久才执行
OnUnitActiveSec
这个
timer
配置文件所管理的那个
unit
服务在最后一次启动后,隔多久后再执行一次的意思
OnUnitInactiveSec
这个
timer
配置文件所管理的那个
unit
服务在最后一次停止后,隔多久再执行一次的意思。