Cron表达式简明教程
Cron表达式的起源可以追溯到1970年代早期的UNIX系统。以下是关于Cron表达式起源的详细介绍:
起源:
- 时间背景:Cron表达式最初是在1970年代早期的UNIX系统中创建的。
- 设计者:虽然Cron表达式的具体设计者没有明确的记录,但它与UNIX系统的整体设计和开发密切相关。UNIX系统是由贝尔实验室的Ken Thompson、Dennis Ritchie等人开发的,而Cron作为UNIX系统的一部分,其设计思想也反映了UNIX系统简洁、灵活和模块化的设计理念。
作用与特点:
- 目的:Cron表达式的目的是为了在多用户的UNIX环境中,通过预定任务的执行时间来减轻系统资源的压力。它允许用户通过简单的文本文件(通常称为crontab文件)来存储和管理任务的调度信息。
- 应用:Cron表达式在计算机操作系统和应用程序中得到了广泛应用。在操作系统中,它可以用于控制定期执行系统维护任务,如清理日志、备份数据等。在应用程序中,Cron表达式可以用于定时执行一些特定的业务逻辑,如定时发送邮件、生成报告、数据分析等。
格式与语法:
Cron表达式通常包含5个或6个时间字段,从左到右分别表示分钟、小时、日期、月份和星期几(可选的秒字段在某些系统中也被支持)。每个字段都可以使用数字、星号、逗号、减号、正斜杠和问号等特殊字符来指定值或范围。
-
字段组成:
- 秒(Seconds):0-59的整数,表示秒数。
- 分钟(Minutes):0-59的整数,表示分钟数。
- 小时(Hours):0-23的整数,表示小时数(24小时制)。
- 日期(Day of Month):1-31的整数,表示一个月中的日期。
- 月份(Month):1-12的整数,或者使用月份的英文缩写(如JAN、FEB等)。
- 星期(Day of Week):0-7的整数,其中0和7都表示星期日,或者使用星期的英文缩写(如SUN、MON等)。
- 年(可选,Year):在某些Cron表达式中,可能包含年份字段,用于指定具体的年份。
-
特殊字符:
*
:表示该字段的所有可能值。,
:用于指定多个值。-
:用于指定一个范围。/
:指定数值的增量。?
:在日期和星期字段中,用于表示不指定值。L
:在日期字段中,表示当月的最后一天;在星期字段中,表示某月的最后一个星期X。W
:在日期字段中,表示离指定日期最近的工作日(周一至周五)。#
:在星期字段中,用于指定一个月的第几个星期X。
-
使用示例:
- 每天中午12点执行:
0 0 12 * * ?
- 每周一、三、五的上午10点执行:
0 0 10 * * 1,3,5
- 每月最后一天下午5点执行:
0 0 17 L * ?
- 每月第二个星期日的凌晨1点执行:
0 0 1 * * 2#2
- 每天中午12点执行:
Cron表达式在不同的系统和应用中可能有不同的实现和变种,这主要是基于特定系统或应用的需求和特性。以下是一些常见环境中Cron表达式的不同实现和变种:
- UNIX Cron(Crontab):
- 这是最原始的Cron实现,它使用一个简单的文本文件(crontab文件)来定义定时任务。
- Crontab文件中的每一行代表一个定时任务,其格式包括时间字段(分钟、小时、日期、月份、星期)和要执行的命令或脚本。
- Cron服务会在指定的时间自动执行这些任务。
┌──────────── [可选] 秒 (0 - 59)
| ┌────────── 分钟 (0 - 59)
| | ┌──────── 小时 (0 - 23)
| | | ┌────── 天数 (1 - 31)
| | | | ┌──── 月份 (1 - 12) OR jan,feb,mar,apr ...
| | | | | ┌── 星期几 (0 - 6, 星期天 = 0) OR sun,mon ...
| | | | | |
* * * * * *
- Quartz Scheduler:
- Quartz是一个开源的作业调度库,用于在Java应用程序中进行任务调度。
- Quartz中的Cron表达式比UNIX Cron更为复杂,因为它支持秒字段,并且提供了更多的选项和灵活性。
- Quartz的Cron表达式格式通常为:
秒 分 时 日 月 周 年(可选)
。
* * * * * * *
- - - - - - -
| | | | | | |
| | | | | | + year [optional]
| | | | | +----- day of week (1 - 7) sun,mon,tue,wed,thu,fri,sat
| | | | +---------- month (1 - 12) OR jan,feb,mar,apr ...
| | | +--------------- day of month (1 - 31)
| | +-------------------- hour (0 - 23)
| +------------------------- min (0 - 59)
+------------------------------ second (0 - 59)
标签:星期,教程,59,字段,Cron,UNIX,表达式
From: https://www.cnblogs.com/Chendaqian/p/18220794