//炬火不止,前进不息

复习 Cron 定时任务并简单做一些笔记

分类在 全部Linux计算机其他相关运维 0 评论

前言

有很长一段时间没有使用 crontab 来配置计划任务,对简单的规则变得生疏了,原来写的任务表单头部备忘也不知道什么时候弄没了,今天有使用到,就在 crontab 任务表单文件中以注释形式备忘,这里也记录一下

名词定义

cron 是 Linux 内置计划任务服务的名称
crond 是这个服务的守护进程
crontab 是用来创建定时任务的命令

字段格式

下面是 crontab 的格式,由 5 个(标准)字段组成
{minute} {hour} {day-of-month} {month} {day-of-week} {user} {command}

定义时间周期的字段

标准字段取值 特殊字符功能示例备注
minute0-59 *匹配任意值
hour0-23 -匹配区间值1-12
day-of-month1-31 /除法计算*/10指能被10整除的值
month1-12 \字符转义date +%Y%m%d一般用于转义百分号
day-of-week0-7 %结束命令行、换行、重定向 第一个 " % " 后的内容会被做为标准输入发送给前面的命令

非标准字段比较少用到就不记录了

crontab -l

其他字段

在五个定义时间周期的字段之后,有一个可选的字段 {root}。这一字段用于指定

在格式的最后,还有一个字段 {command} 。这个字段可以是一条可执行的命令,也可以是一个脚本文件,脚本文件可以是任何格式,前提是要满足这是一个可执行的文件。

配置文件

Cron 的配置文件位于 /etc/crontab,默认配置也有以注释形式提供的使用方法,这里对默认参数进行解释。

# 以下是默认配置
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

SHELL 参数用于指定执行 shell 命令行的程序。

PATH 参数用于指定服务的默认环境变量,每个路径以 冒号 分隔。

MAILTO 参数代表收件用户,每触发一次计划任务, crond 守护进程都会向收件用户发送一封系统内部邮件报告任务执行所产生的输出。

Cron 的邮件机制依赖 sendmail 或 postfix 服务,且只会发送标准输出(stdout)。另外经过一些配置之后,也可以使用 SMTP 协议将邮件发送到外部的邮箱。

更多有关参数的详细信息还请移步 man 手册。

笔记

上面提到的五个定义时间周期的字段中,除了最后一个外,每个字段所代表内容从时间周期上看都是从小到大,可以快速记为 “分时日月周” 。

Cron 服务的守护进程名为 crond 。编辑任务表单并重启守护进程之后,crontab 工具会进行解析,并传送给守护进程。这个守护进程会定时检查是否有任务需要执行,这个定时检查的周期时间是 crontab 的最小周期也就是每分钟检查一次。

参考资料

关于定时任务的一些问题,/etc/crontab和crontab -e的区别

留言