17.4 【Linux】systemctl 针对 timer 的配置文件

有时候,某些服务你想要定期执行,或者是开机后执行,或者是什么服务启动多久后执行等等的。在过去,我们大概都是使用 crond 这个服务来定期处理, 不过,既然现在有一直常驻在内存当中的 systemd 这个好用的东西,加上这 systemd 有个协力服务,名为 timers.target的家伙,这家伙可以协助定期处理各种任务。

systemd.timer 的优势

为什么要使用systemd.timer呢?

由于所有的 systemd 的服务产生的信息都会被纪录 (log),因此比 crond 在 debug 上面要更清楚方便的多;

各项 timer 的工作可以跟 systemd 的服务相结合;

各项 timer 的工作可以跟 control group (cgroup,用来取代 /etc/secure/limit.conf 的功能) 结合,来限制该工作的资源利用

任务需求

基本上,想要使用 systemd 的 timer 功能,你必须要有几个要件:

系统的 timer.target 一定要启动

要有个 sname.service 的服务存在 (sname 是你自己指定的名称)

要有个 sname.timer 的时间启动服务存在

sname.timer 的设置值

可以到 /etc/systemd/system 下面去创建这个 *.timer 档,那这个文件的内容要项有哪些东西呢?基本设置主要有下面这些: (man systemd.timer & man systemd.time)

17.4 【Linux】systemctl 针对 timer 的配置文件_第1张图片

使用于 OnCalendar 的时间

如果你想要从 crontab 转成这个 timer 功能的话,那么对于时间设置的格式就得要了解了解,基本上的格式如下所示:

常用的间隔时间单位有:

us 或 usec:微秒 (10-6 秒)

ms 或 msec:毫秒 (10-3 秒)

s, sec, second, seconds

m, min, minute, minutes

h, hr, hour, hoursd, day, days

w, week, weeksmonth, months

y, year, years

此外,你也可以使用英文常用的口语化日期代表,例如 today, tomorrow 等!假设今天是2015-08-13 13:50:00 的话,那么:

17.4 【Linux】systemctl 针对 timer 的配置文件_第2张图片

17.5 CentOS 7.x 默认启动的服务简易说明

17.4 【Linux】systemctl 针对 timer 的配置文件_第3张图片

17.4 【Linux】systemctl 针对 timer 的配置文件_第4张图片

17.4 【Linux】systemctl 针对 timer 的配置文件_第5张图片

17.4 【Linux】systemctl 针对 timer 的配置文件_第6张图片

17.4 【Linux】systemctl 针对 timer 的配置文件_第7张图片

17.6 重点回顾

早期的服务管理使用 systemV 的机制,通过 /etc/init.d/*, service, chkconfig, setup 等指令来管理服务的启动/关闭/默认启动;

从 CentOS 7.x 开始,采用 systemd 的机制,此机制最大功能为平行处理,并采单一指令管理 (systemctl),开机速度加快!

systemd 将各服务定义为 unit,而 unit 又分类为 service, socket, target, path, timer 等不同的类别,方便管理与维护

启动/关闭/重新启动的方式为: systemctl [start|stop|restart] unit.service

设置默认启动/默认不启动的方式为: systemctl [enable|disable] unit.service

查询系统所有启动的服务用 systemctl list-units --type=service 而查询所有的服务 (含不启动) 使用 systemctl list-unit-files --type=service

systemd 取消了以前的 runlevel 概念 (虽然还是有相容的 target),转而使用不同的target 操作环境。常见操作环境为 multi-user.targer 与 graphical.target。 不重新开机而转不同的操作环境使用 systemctl isolate unit.target,而设置默认环境则使用 systemctlset-default unit.target

systemctl 系统默认的配置文件主要放在 /usr/lib/systemd/system,管理员若要修改或自行设计时,则建议放在 /etc/systemd/system/ 目录下。

管理员应使用 man systemd.unit, man systemd.service, man systemd.timer 查询/etc/systemd/system/ 下面配置文件的语法, 并使用 systemctl daemon-reload 载入后,才能自行撰写服务与管理服务。

除了 atd 与 crond 之外,可以 通过 systemd.timer 亦即 timers.target 的功能,来使用systemd 的时间管理功能。

一些不需要的服务可以关闭。

你可能感兴趣的:(Linux,linux,运维,服务器)