Cron 表达式生成器
| 字段 | 取值范围 |
|---|---|
| 分钟 | 0-59 |
| 小时 | 0-23 |
| 日期 | 1-31 |
| 月份 | 1-12 |
| 星期 | 0-7 |
*任意值*/5每隔 N 个单位1-5范围1,3,5多个值1-5/2步长| 字段 | 表达式 | 含义 |
|---|
在线生成、解析与验证 Linux Cron 定时任务
Cron 表达式生成器是一款免费的在线 Cron 定时任务生成、解析与验证工具,支持 Linux/Unix 常见的标准五字段 Cron 格式。你可以通过分钟、小时、日期、月份和星期字段配置生成定时任务表达式,也可以输入已有表达式,检查语法和取值范围,查看各字段的执行规则、自然语言说明以及下一次执行时间。工具在浏览器本地完成表达式处理,无需安装软件,适合开发者、系统管理员和需要配置服务器定时任务的用户。
Cron 表达式生成器的主要功能
- 可视化生成:通过分钟、小时、日期、月份和星期五个字段配置 Cron 执行规则。
- 常用预设:提供每分钟、每隔 5 分钟、每小时、每天、工作日和每月等常见定时规则。
- 快捷设置:通过字段快捷按钮快速选择任意值、间隔值、指定分钟、工作日和周末等配置。
- 实时生成:修改字段后自动组合并更新五字段 Cron 表达式。
- 语法验证:检查字段数量、数值范围、表达式格式和步长是否合法,并提示相应错误。
- 表达式解析:输入已有 Cron 表达式,解析每个字段的取值和执行含义。
- 自然语言说明:将常见 Cron 规则转换为容易理解的执行时间描述。
- 执行时间预览:根据浏览器本地时区估算下一次及后续多次执行时间。
- 语法参考:提供字段范围、星号、步长、范围和列表等常见语法说明。
- 复制表达式:一键复制生成或验证通过的 Cron 表达式,方便粘贴到服务器配置中。
什么是 Cron 表达式?
Cron 表达式是一种用于描述周期性任务执行时间的规则格式,常见于 Linux/Unix 系统的 Crontab 定时任务。系统根据表达式中的时间字段匹配当前时间,当调度条件满足时执行指定命令或脚本。
本工具采用常见 Linux/Unix Crontab 五字段格式,字段顺序为分钟、小时、日期、月份和星期。例如:
0 9 * * 1-5
该表达式表示每周一至周五上午 09:00 执行一次任务。
Cron 表达式五个字段说明
标准五字段 Cron 表达式由五个按顺序排列的字段组成,各字段之间使用空格分隔。
1. 分钟(Minute)
取值范围为 0-59,用于指定每小时中的执行分钟。例如 0 表示每小时的第 0 分钟执行,*/5 表示每隔 5 分钟执行一次。
2. 小时(Hour)
取值范围为 0-23,使用 24 小时制。例如 8 表示上午 8 点,18 表示下午 6 点。
3. 日期(Day of Month)
取值范围为 1-31,用于指定每月中的日期。例如 1 表示每月 1 日,1-15 表示每月 1 日至 15 日。实际执行时,不存在的日期不会匹配,例如 2 月没有 31 日。
4. 月份(Month)
取值范围为 1-12,分别对应 1 月至 12 月。例如 1 表示每年 1 月,6,12 表示每年 6 月和 12 月。
5. 星期(Day of Week)
取值范围为 0-7,常见 Linux Cron 中 0 和 7 均表示星期日,1 至 6 分别表示星期一至星期六。例如 1-5 表示星期一至星期五,0,6 表示星期日和星期六。
Cron 表达式常用语法
星号(*)
* 表示该字段的所有可用值。例如分钟字段使用 *,表示每分钟都满足该字段条件。
步长(*/N)
*/N 表示按照指定间隔选择字段值。例如分钟字段使用 */5,表示每隔 5 分钟执行一次;小时字段使用 */2,表示每隔 2 小时执行一次。
范围(A-B)
A-B 表示指定范围内的所有值。例如小时字段使用 9-17,表示上午 9 点至下午 5 点之间对应的小时值。
列表(A,B,C)
A,B,C 表示多个指定值。例如小时字段使用 8,12,18,表示每天 8 点、12 点和 18 点执行。
范围步长(A-B/N)
A-B/N 表示在指定范围内按照步长选择值。例如分钟字段使用 0-30/10,表示在第 0、10、20 和 30 分钟执行。
起始值步长(A/N)
A/N 表示从指定起始值开始,按照步长递增,直到该字段允许的最大值。例如分钟字段使用 5/10,表示第 5、15、25、35、45 和 55 分钟执行。
Cron 表达式生成与解析示例
每分钟执行一次
* * * * * 表示每分钟执行一次任务。
每 5 分钟执行一次
*/5 * * * * 表示每小时的第 0、5、10、15 等分钟执行。
每小时执行一次
0 * * * * 表示每小时的第 0 分钟执行一次。
每天上午 8 点执行
0 8 * * * 表示每天上午 08:00 执行一次。
工作日上午 9 点执行
0 9 * * 1-5 表示每周一至周五上午 09:00 执行。
每周一上午 9 点执行
0 9 * * 1 表示每周一上午 09:00 执行。
每月 1 日凌晨执行
0 0 1 * * 表示每月 1 日 00:00 执行。
每天多个时间执行
0 8,12,18 * * * 表示每天上午 08:00、中午 12:00 和下午 18:00 执行。
Cron 表达式日期与星期的匹配规则
在常见 Vixie Cron 语义中,日期字段和星期字段同时设置为限制值时,两个字段采用 OR 关系,而不是必须同时满足。例如:
0 8 1 * 1
表示每个月 1 日以及每周一的 08:00 执行。如果某个月的 1 日恰好是星期一,该日期只对应一个匹配时间,不会因为两个条件同时满足而执行两次。
当日期字段或星期字段其中一个使用 * 时,另一个字段的限制条件决定对应的日期匹配规则。配置涉及日期和星期时,建议使用本工具的解析说明和执行时间预览检查实际结果。
如何使用 Cron 表达式生成器?
- 打开生成器,选择分钟、小时、日期、月份和星期字段。
- 可以选择常用预设,也可以通过快捷设置按钮快速配置字段。
- 工具自动生成 Cron 表达式,并检查字段格式和数值范围。
- 查看表达式描述,确认任务执行规则符合预期。
- 点击复制按钮,将表达式粘贴到 Linux Crontab 或其他兼容的定时任务配置中。
如何解析和验证 Cron 表达式?
- 切换到解析器选项卡。
- 输入需要检查的五字段 Cron 表达式,例如
0 9 * * 1-5。 - 工具检查字段数量、字段格式、数值范围和步长设置。
- 表达式有效时,查看五个字段的表达式内容和具体含义。
- 查看自然语言描述及下一次和后续执行时间,确认定时规则是否符合预期。
如果表达式字段数量不正确、包含不支持的语法、数值超出允许范围或步长不合法,工具会显示相应的错误提示,帮助定位需要修改的字段。
Cron 下一次执行时间预览
本工具支持根据 Cron 表达式预览下一次及后续多次执行时间,方便检查定时规则是否符合预期。预览使用浏览器本地日期、时间和时区进行计算,不需要将表达式发送到服务器。
例如,输入 0 9 * * 1-5,可以查看后续符合星期一至星期五上午 09:00 规则的执行时间。对于指定日期、月份或星期的表达式,也可以通过多次执行时间检查规则是否正确。
执行时间预览属于客户端估算,实际任务执行还会受到服务器时区、系统时间、夏令时和具体 Cron 调度器实现的影响。部署到服务器前,应以服务器实际使用的 Cron 环境为准。
Linux Crontab 使用示例
在 Linux 系统中,可以使用 crontab -e 编辑当前用户的定时任务配置。每条常见五字段 Cron 任务通常由时间表达式和需要执行的命令组成,例如:
*/5 * * * * /usr/bin/php /var/www/html/task.php以上示例表示每隔 5 分钟执行一次 PHP 脚本。实际使用时,请根据服务器上的程序路径、运行用户、环境变量和权限配置调整命令。
Cron 表达式适用场景
- Linux 和 Unix 系统的 Crontab 定时任务。
- 服务器定时执行 PHP、Python、Shell 等脚本。
- 网站数据更新和定期维护。
- 数据库备份与定时归档。
- 日志清理、临时文件清理和系统维护。
- 定时同步数据、调用 API 和执行自动化任务。
- 周期性报表生成和数据处理。
- 开发环境中的重复任务调度。
使用 Cron 表达式时的注意事项
- 确认使用的是五字段 Cron 格式,并检查目标调度器支持的语法。
- 确认服务器系统时间和时区设置正确,不要直接将浏览器时区当作服务器时区。
- 日期与星期同时设置限制条件时,注意常见 Vixie Cron 的 OR 匹配规则。
- 每月 29 日、30 日或 31 日等日期规则,需要考虑不同月份的实际天数。
- 使用步长、范围和列表时,检查起始值、结束值及步长是否符合预期。
- 建议在生产环境部署前验证表达式,并确认命令路径、执行权限和运行环境。
支持范围说明
本工具主要支持常见 Linux/Unix Crontab 标准五字段表达式,包括分钟、小时、日期、月份和星期字段,以及星号、步长、范围和列表等语法。星期字段支持常见的 0-7 表示方式,其中 0 和 7 均表示星期日。
本工具不支持 Quartz、Spring 等使用六字段或七字段的 Cron 方言,也不支持 ?、L、W、# 等扩展特殊字符。不同 Cron 调度器可能存在语义差异,使用前请确认目标环境的语法规范。
常见问题
Cron 表达式有几个字段?
本工具支持的标准 Cron 表达式包含五个字段,依次为分钟、小时、日期、月份和星期,字段之间使用空格分隔。
每分钟执行一次的 Cron 表达式是什么?
* * * * * 表示每分钟执行一次,是常见的五字段 Cron 定时表达式。
*/5 在 Cron 表达式中是什么意思?
*/5 表示每隔 5 个单位选择一次字段值。例如放在分钟字段中,表示每隔 5 分钟执行一次。
Cron 表达式中的星期 0 和 7 有什么区别?
在常见 Linux/Unix Cron 中,星期字段的 0 和 7 都可以表示星期日,1 至 6 表示星期一至星期六。
日期和星期同时设置时,是 AND 还是 OR?
在常见 Vixie Cron 语义中,如果日期和星期字段都设置了具体限制,满足日期条件或星期条件中的任意一个即可执行,即采用 OR 关系。具体行为仍应以目标 Cron 实现为准。
为什么 Cron 表达式验证通过,却没有执行?
语法正确不代表任务一定会成功执行。还需要检查服务器时区、系统时间、Crontab 服务状态、任务运行用户、命令绝对路径、文件权限和程序运行环境。
本工具支持 Quartz Cron 吗?
不支持。本工具主要面向 Linux/Unix 标准五字段 Crontab 格式。Quartz 常见表达式使用六字段或七字段,并支持 ?、L、W 和 # 等扩展语法,需要使用对应的 Quartz 表达式工具。
下一次执行时间为什么可能与服务器实际执行时间不同?
本工具根据浏览器本地时区进行时间预览,而服务器可能使用不同的时区、系统时间或 Cron 实现。夏令时切换和调度器自身规则也可能影响实际执行时间,因此生产环境应以服务器的调度结果为准。
总结
Cron 表达式生成器集定时规则生成、表达式解析、语法验证和执行时间预览于一体。通过五字段配置、常用预设、快捷设置和自然语言说明,可以更方便地创建和检查 Linux Crontab 定时任务。无论是服务器脚本、数据库备份、网站维护还是自动化任务调度,都可以使用该工具快速生成符合预期的 Cron 表达式。
Cron 表达式生成与解析工具
- 支持分钟、小时、日期、月份和星期五字段配置
- 提供常用 Cron 预设和字段快捷设置
- 自动生成并验证 Cron 表达式,检查字段数量、格式、范围和步长
- 解析自定义表达式,显示每个字段的含义和自然语言描述
- 支持日期与星期 OR 匹配规则的说明
- 预览下一次及后续多次任务执行时间
- 根据浏览器本地时区进行执行时间估算
- 适用于 Linux Crontab、服务器脚本和自动化定时任务