51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

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

热帖

一、定义:

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 命令可以查看、编辑定时计划任务。

赞(7)
未经允许不得转载:工具盒子 » crontab命令及cron表达式详解(用于在linux系统中执行定时任务计划)