我的目标是在每个月的第一个工作日上午7点(7/1 / 15,8 / 3 / 15,9 / 1/15等)触发报告。
我使用以下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是星期日。
要为一个字段指定多个值,可以使用以下运算符。按优先顺序,
要允许定期计划的任务在系统上产生均匀负载,应尽可能使用符号H(表示“哈希”)。
答案 0 :(得分:3)
本月第一个工作日规则:
以下cron表达式应该完成这项工作:
H 7 1-3 * 1
H 7 1 * 2
H 7 1 * 3
H 7 1 * 4
H 7 1 * 5
# Would last have run at Wednesday, July 1, 2015 7:00:02 AM EEST; would next run at Monday, August 3, 2015 7:00:02 AM EEST.
请注意,由于this文章,您不能只使用:
H 7 1-3 * 1
H 7 1 * 2-5
以上不起作用!相反,这个工作是在每个工作日运行,在本月1日运行两次,也可能在每月的第2天和第3天运行两次!
但我无法重现它。
答案 1 :(得分:1)
这应该很好:
H 7 1-3 * 1
H 7 1 * 2-5
所引用的答案所涉及的文章是关于crontab表达式的。 Jenkins cron表达式实际上对 DOM 和 DOW 使用 AND (否则接受答案的解决方案也不起作用)
答案 2 :(得分:0)
绝对奇怪,特别是因为当你将表达式改为
时H 7 1-3/3 8 1-5
它承认八月。得到某种bug。也许这是闰秒问题?
答案 3 :(得分:0)
以下是您的问题的答案,似乎可以正常工作
http://www.switchplane.com/blog/how-to-run-a-cron-job-on-the-first-weekday-of-the-month/
一切顺利