Cloud Scheduler设置每月首个周一触发任务的cron表达式运行异常咨询
Cron表达式触发异常的核心原因
你对Unix cron规则的理解确实存在偏差,问题出在日期与星期字段的匹配逻辑上:
- 标准Unix cron规则中,若日期(第3位)和星期(第5位)都未使用通配符
*,二者为或逻辑,而非且逻辑。你当前使用的0 5 1-7 * 1实际匹配两类时间:- 每月1-7日的任意星期、早5点
- 每月所有周一的早5点
这就是8月16日(周一)也触发任务的原因,完全符合规则,并非异常。
实现每月第一个周一触发的正确写法
GCP Cloud Scheduler兼容Vixie cron的扩展语法,你可以直接使用#指定当月第几个星期几,正确cron表达式为:0 5 * * 1#1
该表达式仅匹配每月第一个周一的早5点,不会触发其他日期的任务。
AEST时区的影响
时区配置只会影响触发时间的时区基准,不会改变cron字段的匹配规则:
- 你配置AEST时区后,表达式中设置的5点为AEST时区的早5点,而非UTC或其他时区的时间,只要时区设置符合你的预期,就不会导致非预期日期触发的问题,你当前遇到的异常和时区配置无关。
内容的提问来源于stack exchange,提问作者Ademi
相关产品推荐
相关产品推荐

