crontab支持逗号、减号、斜杠组合调度:逗号列举离散值(如8,12,18),减号定义连续范围(如9-17),斜杠控制步长(如*/5);三者可共存,解析顺序为范围→步长→逗号,不可嵌套。

crontab 支持用逗号(,)、减号(-)和斜杠(/)组合表达复杂的调度逻辑,关键在于理解每个符号的含义及其优先级——它们可以叠加使用,但不能嵌套(比如 */2-4 是非法的)。
逗号:显式列举多个独立时间点
用于在同一字段中指定多个不连续的值,相当于“或”关系。适用于错开多个固定时刻执行任务。
-
0 8,12,18 * * *:每天 8:00、12:00、18:00 各运行一次 -
30 9-17/2 * * 1-5中的1-5表示周一至周五;若写成1,3,5就只在周一、三、五执行 - 可混合数字与范围:
1,3-5,9等价于1,3,4,5,9
减号:定义连续的时间范围
表示“从 A 到 B 的所有值”,常用于限定工作日、白天时段等连续区间。
-
0 9-17 * * 1-5:工作日每小时整点执行(9 点到 17 点含首尾) -
*/10 8-10,14-16 * * *:每天 8–10 点和 14–16 点之间,每 10 分钟执行一次 - 注意:范围必须合法,
5-1无效;跨天需拆成两段,如凌晨要写0-3,22-23
斜杠:步长控制,在范围或全集中按间隔取值
格式为 起始值/步长 或 */步长,常用来实现“每隔 N 单位执行一次”的错峰策略。
-
*/5 * * * *:每 5 分钟执行(等价于0,5,10,15,...) -
10-59/5 * * * *:每小时第 10、15、20…55 分钟执行(避开整点,减少瞬时压力) -
0 0-23/3 * * *:每天 0 点、3 点、6 点…21 点共 8 次(不是 0/3=0,而是从 0 开始每 3 小时取一个)
组合使用:实现真正的错峰调度
三个符号可共存于同一字段,按“范围 → 步长 → 逗号列举”顺序解析,适合精细化分流负载。
-
15,45 8-12,14-18/2 * * 1-5:工作日 8–12 点每小时 15 和 45 分执行;14–18 点每 2 小时(即 14、16 点)的 15 和 45 分执行 -
*/3 9-17 * * */2:每偶数周的工作日(周一至周五),9–17 点内每 3 分钟执行一次 - 避免歧义:想在每月 1、11、21 日的 2、12、22 点执行?写成
0 2,12,22 1,11,21 * *,不要试图用1-21/10(它会包含 1、11、21,但也可能被误读为 1–21 范围内每 10 个数,实际 cron 解析为1,11,21,但可读性差,不推荐)











