我的目标是在每月第一个工作日的上午7点(2015年7月1日、2015年8月3日、2015年9月1日等)触发报告。
我使用了以下cron表达式:H 7 1-3/3 * 1-5
它在7月1日运行,但下一个运行日期不是8月3日,而是9月1日。我如何才能让它在每个月的第一个工作日运行?
我正在使用以下帮助指南:
MINUTE小时内的分钟数(0-59)
HOUR一天中的小时(0-23)
DOM一个月中的第几天(1-31)
月月份(1-12)
DOW一周中的第几天(0-7),其中0和7是星期日。
要为一个字段指定多个值,可以使用以下运算符。按优先级顺序,
- 指定所有有效值
- M-N指定值的范围
- M-N/X或 */X在指定范围或整个有效范围内以X为间隔步进
- A,B,...,Z枚举多个值
为了使周期性调度的任务在系统上产生均匀的负载,应尽可能使用符号H(表示“散列”)。
3条答案
按热度按时间30byixjq1#
每月第一个工作日规则:
下面的cron表达式应该可以完成这项工作:
请注意,由于this文章的缘故,您不能只用途:
上面的方法不起作用!相反,作业在每个工作日运行,每月1号运行两次,可能在每月2号和3号运行两次!
但我无法复制它。
cngwdvgl2#
这应该可以正常工作:
Jenkins cron表达式实际上使用AND来表示 DOM 和 DOW(否则从这个被接受的答案得到的解也不会起作用)
wpcxdonn3#
这是你的问题的答案,看起来它可以工作
http://www.switchplane.com/blog/how-to-run-a-cron-job-on-the-first-weekday-of-the-month/
祝你一切顺利