一、定义:
cron 代表“命令调度程序(Command Rund On)”,是 Unix/Linux 系统中用于执行定时计划任务的工具,类似于 Windows 系统中的任务计划程序(schtasks)。cron 命令可以在无需人工干预的情况下自动运行脚本、命令和程序,常用来执行分析数据、生成报告、发送邮件和备份文件等周期性任务。
二、安装启用:
可通过“rpm -qa | grep -i crontabs”命令检查当前系统是否已安装 crontabs。
P1.crontabs 安装和启用
如果没有,可通过“yum -y install crontab”命令安装。
安装后,通过“service crond start | status”命令启动或者查看 crond 运行状态。
可以通过“/etc/init.d/crond stop | start | restart | status”命令(需要 root 权限)控制 cron 运行状态。
另外,可以通过“chkconfig crond on”命令设置开机自动启动 cron。
三、使用:
cron 通过任务表(Cron Table)的形式来同时控制多个定时计划任务。可以使用”crontab -e“命令来编辑 /var/spool/cron 下对应用户的 cron 文件,也可以通过 vi/vim 命令直接编辑 /etc/crontab。
1、crontab 命令常用参数:
- -e:edit 的缩写,编辑用户 cron 表;
- -l:list 的缩写,列出用户 cron 表;
- -r:删除用户 cron 表;
P2.通过“crontab -e”命令编辑 cron 表内容
2、cron 表内容格式:分 时 日 月 周 [用户] command //见上图2
- 分、时、日、月、周 的定义和取值范围见“3、cron表达式”中的详细说明;
- command:要执行的命令,可以是系统命令,也可以是脚本文件、其他应用程序等等。
3、cron 表达式:
cron 表达式通过特定的规则来表示时间,功能类似于正则表达式。
3.1、cron 时间格式:
秒域 分域 时域 日域 月域 周域 [年域]
//每个域之间使用空格隔开,年域为非必填项。Linux 系统中精简掉了秒域、年域这两个首尾域。
3.2、每个域的取值范围及可取符号:
域名 | 可取值范围 | 常用可取符号 |
---|---|---|
秒域 | 0~59 的整数 | * – , / |
分域 | 0~59 的整数 | * – , / |
时域 | 0~23 的整数 | * – , / |
日域 | 1~31 的整数 | * – , / ? L |
月域 | 0~12 的整数或 JAN-DEC | * – , / |
周域 | 1~7 的整数或 SUM-SAT | * – , / ? L # |
年域 | 1970~2099 的整数 | * – , / |
3.3、符号释义:
①* 号:可以匹配该域的所有值。
“0 10 11 * * ?”表示每天 11 点 10 分执行一次任务。
“*/5 * * * * ?”表示每隔 5 秒钟执行一次。
②? 号:表示不确定值、不限制值,只能用在日域或周域上,且在一个 cron 表达式中最多只能出现 1 次。
? 号 和 * 号的区别是,并不能匹配到该域上的所有值。
“ 0 10 11 12 * ?”表示每月 12 日 11 点 10 分执行,而不论周几;
“0 10 11 ? * 7”表示每个月周日 11 点 10 分执行,而不论多少号。
③- 减号:表示匹配该域上的一个范围。
“0 5-10 11 * * ?”表示每天的 11:05-11:10,每分钟执行一次;
④/ 斜杠符号:表示起始时间和间隔时间。
“0 0 5/2 * * ?”表示每天 5 点开始,每隔 2 个小时执行一次,即 5点、7点、9点、11点、13点…
⑤, 逗号:表示枚举值。
“0 0 5,10,15 * * *”表示每天的 5点、10点、15点 各执行一次。
⑥# 井号:只能用于周域,#井号后接数字表示第几周,如果不存在这个周的值,则不执行。
“ 0 0 10 ? * 5#1”表示每个月的第 1 个周四 10 点执行。
⑦L 字母:只能用于日域、周域,是 Last 的缩写,用于日域表示一个月的最后一天,用于周域则表示最后一周。
在周域中,如果单独一个“L”,这表示最后一周的周六;如果“L”前有数字 1-7(周日->周六),则表示最后一个周几。
“0 0 10 ? * 2L”表示每月最后一个周一 10 点执行;
“0 0 10 L * ?”表示每月最后一天 10 点执行。
附:
cron、crond、crontab 和 crontabs 说明:
cron 是工具名称/应用名称;
crond 是进程实例;
crontabs 是安装包名称;
crontab 是配置命令,通过 crontab 命令可以查看、编辑定时计划任务。