Cron 表达式产生的背景:在Unix系统中,用户经常需要设置一些周期性被执行的任务,如定期备份文件、发送邮件等。为了满足这种需求,Unix系统提供了crontab命令,允许用户定义任务的时间表,并在指定的时间点自动执行这些任务。
为了方便用户定义任务的执行时间,Unix系统引入了Cron表达式。
1. cron 表达式的组成
它包含6个或7个域,每个域代表不同的含义,从左到右依次为“秒 分 时 日 月 星期几 年”,其中年不是必须的。
每个域都有其特定的取值范围:秒(0-59),分钟(0-59),小时(0-23),日(1-31),月(1-12 或 JAN-DEC),星期几(0-6 或 SUN-SAT),年(可选,1970-2099)。其中,星期几和日两个参数只能出现一个或者同时出现。
2. cron 表达式中特殊的符号
还有一些特殊的符号,如**“*”表示匹配该域的所有值**,“?”表示不指定值,“,”表示枚举值,“/”表示起始时间和间隔时间,“L”表示最后一天,“W”表示离指定日期最近的工作日等。这些符号使得cron表达式具有更灵活的时间匹配能力。
3. 常见示例
(1)0 0 0 * * ?:每天的零点整执行任务。
(2)0 0 */2 * * ?:每隔2小时执行一次任务。
(3)0 0 12 * * ?:每天中午12点执行任务。
(4)0 15 10 * * ?:每天上午10点15分执行任务。
(5)0 0 6,18 * * ?:每天的早上6点和晚上6点执行任务。
(6)0 0/30 8-18 * * ?:每天的上午8点到下午6点之间,每隔30分钟执行一次任务。
(7)0 0 0 1 1 ?:每年的1月1日零点整执行任务。
(8)0 0 0 * * 2:每周的星期二零点整执行任务。
(9)0 0 0 ? * 6#3:每月的第三个星期六零点整执行任务。
(10)0 0 0 L * ?:每个月的最后一天零点整执行任务。
4. 快速查询地址
在线查看 cron 表达式