cron 表达式解析器
逐个字段解读 cron 表达式,用一句话说明它的含义,并查看它接下来的运行时间。
| 字段 | 值 | 含义 | 允许的值 |
|---|---|---|---|
| 分钟 | | 0–59 | |
| 小时 | | 0–23 | |
| 日期 | | 1–31 | |
| 月份 | | 1–12, JAN–DEC | |
| 星期 | | 0–7, SUN–SAT |
| 序号 | 距现在 |
|---|
把工具固定在这里,会保存在此浏览器中。
固定一个工具,它的贴纸就会出现在这里。
逐个字段解读 cron 表达式,用一句话说明它的含义,并查看它接下来的运行时间。
| 字段 | 值 | 含义 | 允许的值 |
|---|---|---|---|
| 分钟 | | 0–59 | |
| 小时 | | 0–23 | |
| 日期 | | 1–31 | |
| 月份 | | 1–12, JAN–DEC | |
| 星期 | | 0–7, SUN–SAT |
| 序号 | 距现在 |
|---|
cron 表达式由五个以空格分隔的字段组成:分钟(0–59)、小时(0–23)、日期(1–31)、月份(1–12)和星期(0–7,0 和 7 都表示星期日)。cron 每分钟检查一次时钟,当分钟、小时、月份和日期都匹配时就运行任务。日期和星期两个字段按下文所述的规则共同决定某一天是否匹配。
在每个字段中,* 匹配所有值,1,15 这样的列表匹配其中的每个值,1-5 这样的范围匹配从第一个值到最后一个值的全部值,*/15 或 8-18/2 这样的步长则在范围内每隔 N 个取一个值。月份和星期可以写成三个字母的英文名称,即 JAN 到 DEC 和 SUN 到 SAT。
宏是简写形式:@hourly 等于 0 * * * *,@daily 和 @midnight 等于 0 0 * * *,@weekly 等于 0 0 * * 0,@monthly 等于 0 0 1 * *,@yearly 和 @annually 等于 0 0 1 1 *。
日期和星期两个字段不会互相缩小范围。两者都有限制时,只要某天符合其中任意一个,任务就会运行。所以 0 0 13 * 5 会在每月 13 日的午夜运行,也会在每个星期五运行,而不只是在 13 号星期五运行。
Vixie cron 和 cronie 通过第一个字符来判断这两个字段是否有限制。以 * 开头的字段(包括 */2 这样的步长)视为没有限制,这时两个字段都必须匹配。0 0 */2 * 1 会在恰逢每月奇数日的星期一运行。这个工具遵循同样的规则,并会告诉你属于哪种情况。
步长从范围的起点开始计数,到范围结束时重新开始。分钟字段中的 */15 得到 0、15、30 和 45,确实是每 15 分钟一次。*/7 得到 0、7、14,一直到 56,然后四分钟后又回到 0。表格会列出步长展开后的值,方便你看清这一点。
cron 用运行它的机器的时钟来比对表达式,而很多服务器的时钟设置为 UTC。在接下来的运行时间列表上方选择本地时间或 UTC 来对应那台机器,再看另一列就能知道同一时刻在另一个时区是几点。当本地时钟因夏令时调整时,不同的 cron 实现对设在被跳过或重复那一小时内的任务处理方式不同。这个工具不会列出落在被跳过时间的运行,只有当分钟字段或小时字段以 * 开头时,才会把重复的时间列出两次。
这里只解析标准的五字段语法。秒字段、年字段以及 ?、L、W 和 # 这些字符属于 Quartz 等其他调度器,会被报告为错误。在单个值后面加步长(如 5/15)也会报错:crontab 手册只定义了写在 * 或范围后面的步长,所以应写成 5-59/15。
它表示从该字段允许的最小值开始,每隔五个取一个值。在分钟字段中就是第 0、5、10 分钟,一直到第 55 分钟,所以任务每五分钟运行一次。在小时字段中则是 0、5、10、15 和 20 点。
不是。当日期和星期两个字段都有限制时,只要其中一个匹配,cron 就会运行任务。这个表达式会在每月 13 日运行,也会在每个星期五运行。
都是。星期字段接受 0 到 7,0 和 7 都表示星期日。星期一是 1,星期六是 6。也可以写成 SUN、MON 等。
cron 使用其所在系统的时钟和时区,除非你的调度器允许为任务单独设置时区。很多服务器和托管调度服务都运行在 UTC 下,所以在假定使用本地时间之前,请先确认一下。
它会在独立窗口中打开,离线时也能使用。
要安装,请点按“分享”按钮,然后选择“添加到主屏幕”。