可视化Cron表达式生成与解析 — 构建、描述、计算执行时间
Cron 是 Linux/Unix 系统中用于定时任务调度的守护进程,名称源自希腊语"Chronos"(时间)。Cron 表达式定义任务在何时执行,广泛应用于系统维护、数据备份、定时通知、日志轮转等场景。类似工具包括 Windows 的任务计划程序、云平台的定时触发器(如 AWS EventBridge、阿里云 SchedulerX)。
| 字段 | 含义 | 取值范围 | 示例 |
|---|---|---|---|
| 分钟 (Minute) | 小时中的第几分钟 | 0 - 59 | 0, */5, 0-30 |
| 小时 (Hour) | 天中的第几小时 | 0 - 23 | 8, */2, 9-18 |
| 日 (Day of Month) | 月中的第几天 | 1 - 31 | 1, */5, 15-21 |
| 月 (Month) | 年中的第几月 | 1 - 12 | * , 1, 6-8 |
| 星期 (Day of Week) | 周中的第几天 | 0 - 7(0和7都表示周日) | * , 1-5, 0,6 |
| 符号 | 含义 | 示例 | 说明 |
|---|---|---|---|
* | 任意值 | 0 * * * * | 每小时的0分执行 |
, | 列表 | 0 8,12,18 * * * | 每天8点、12点、18点 |
- | 范围 | 0 9-18 * * * | 每天9点到18点每小时 |
/ | 步长 | */5 * * * * | 每5分钟 |
L | 最后(扩展) | 仅日/星期字段 | 月末最后一天、月最后一周X |
# | 第几个(扩展) | 0#2 | 本月第二个周日 |
? | 不指定(扩展) | 日/星期互斥时使用 | 某些实现中替代 * |
| 表达式 | 含义 |
|---|---|
* * * * * | 每分钟执行一次 |
*/10 * * * * | 每10分钟执行一次 |
0 * * * * | 每小时整点执行 |
30 8 * * * | 每天 08:30 执行 |
0 9-18/2 * * * | 9点到18点每2小时 |
0 0 * * 0 | 每周日零点执行 |
0 0 1 * * | 每月1号零点执行 |
0 0 1 1 * | 每年1月1日零点执行 |
*/30 * 15 * * | 每月15号每30分钟 |
0 0 * * 1-5 | 工作日(周一到周五)零点 |
系统运维:日志清理 0 3 * * 0(每周日凌晨3点)、SSL证书检查 0 8 * * 1(每周一早8点)。
数据备份:数据库备份 0 2 * * *(每天凌晨2点)、增量备份 */30 9-18 * * 1-5(工作日每30分钟)。
应用开发:定时邮件 0 7 * * 1-5(工作日早7点)、健康检查 */5 * * * *(每5分钟)。
扩展系统(非标准):部分系统支持6字段格式(增加秒字段)如 0 */5 * * * *(Quartz Scheduler),或7字段(增加年字段)。
1 星期字段中 0 和 7 均表示周日,1 表示周一,以此类推。
2 日和星期同时设置时是"或"关系(只要满足一个即触发),部分实现(如 Quartz)用 ? 表示互斥。
3 Cron 最小精度为分钟,如需秒级调度请使用支持秒字段的扩展语法。
4 表达式 0 0 * * * 并非"每小时"而是"每天零点" —— 每小时的表达方式是 0 * * * *。
5 本工具遵循标准 5字段 Linux Crontab 格式,所有计算在浏览器本地完成,数据不上传服务器。