crontab命令及cron表达式详解(用于在linux系统中执行定时任务计划)

120次阅读
没有评论

一、定义:

cron 代表“命令调度程序(Command Rund On)”,是 Unix/Linux 系统中用于执行定时计划任务的工具,类似于 Windows 系统中的任务计划程序(schtasks)。cron 命令可以在无需人工干预的情况下自动运行脚本、命令和程序,常用来执行分析数据、生成报告、发送邮件和备份文件等周期性任务。

二、安装启用:

可通过“rpm -qa | grep -i crontabs”命令检查当前系统是否已安装 crontabs。

crontab命令及cron表达式详解(用于在linux系统中执行定时任务计划)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 表;

crontab命令及cron表达式详解(用于在linux系统中执行定时任务计划)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 命令可以查看、编辑定时计划任务。

正文完
 
itylq
版权声明:本站原创文章,由 itylq 2023-10-23发表,共计1733字。
转载说明:本站文章遵循CC-4.0国际许可协议,转载请注明出处(格式如“来源:IT摇篮曲www.itylq.com")。
评论(没有评论)
验证码