You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置cron实现奇周、偶周周五分别执行对应定时任务

Cron 奇偶周周五执行任务解决方案

原生cron没有直接支持奇偶周调度的语法,可通过以下两种通用方案实现需求:

方案1:原生cron兼容方案(推荐,无需替换现有cron组件)

在cron触发规则后追加周数判断逻辑,仅满足奇偶条件时才执行实际任务命令,以和Test1对齐的11:05触发时间为例:

  • Test2(偶周周五执行)配置:
    05 11 * * 5 [ $(( $(date +\%V) \% 2 )) -eq 0 ] && /实际/Test2/执行命令路径
    
    规则说明:
    1. 前5位05 11 * * 5保证每周五11:05触发一次调度
    2. date +\%V返回当前ISO标准周数(以周一为周首,每年第一个周一所在周为第1周),对2取模等于0即为偶周,满足条件才执行后续命令
    3. cron配置中%属于特殊字符需要加反斜杠转义
  • Test3(奇周周五执行)配置:
    05 11 * * 5 [ $(( $(date +\%V) \% 2 )) -eq 1 ] && /实际/Test3/执行命令路径
    
    仅需将偶周判断的eq 0改为eq 1即可。
    如果你的业务规则以周日为周首,将\%V替换为\%U即可

方案2:扩展cron/调度框架实现

如果你使用的是支持周数参数的调度组件(如fcron、Quartz等),可直接指定周数范围:
比如Quartz框架中Test2的表达式可写为:
0 5 11 ? * FRI 2/2
代表每年第2周开始,每2周的周五11:05执行,Test3对应改为1/2即可,注意该方案需要处理跨年周数边界问题,通用性弱于方案1。

验证建议

正式配置前可先将执行命令替换为日志打印命令,验证2周确认调度符合预期后再替换为业务命令:

05 11 * * 5 [ $(( $(date +\%V) \% 2 )) -eq 0 ] && echo "Test2 触发 $(date)" >> /tmp/cron_test.log

内容的提问来源于stack exchange,提问作者fahad pirzada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 02:36:04