需要每小时在詹金斯安排工作


16

我是詹金斯的新手。我有一份工作,我需要每1小时安排一次。

我在用

* */1 * * * 

但是它没有有效地工作。

请提供其他解决方案。


3
您应该解释一下“但它无法有效工作”。手段。并添加您的发行版和cronttab条目
Sathyajith Bhat

使用@hourly0 * * * *
Renju Chandran chingath

谢谢。如果我想每3小时安排一次,请提及语法。
2014年

使用:H / 60 * * * *
Eyal Sooliman

Answers:


31

詹金斯使用cron表达式作为解释这里

要安排每个小时,那么您可以

0 * * * *

然后您的工作将每小时执行一次(07:00、08:00、09:00等)

更新

作为原始配置的解释,语法

* */1 * * *

将每分钟执行一次工作。

更新2

根据注释中的要求,此处为每3小时安排一次的语法

0 */3 * * *

语法*/n意味着作业将n每小时排定


感谢您的回答。它工作正常。但是我的工作要花一个多小时才能完成。例如,如果我想每3个小时安排一次这项工作,那将是spell.please共享的。
2014年

检查我更新的答案:)
masegaloeh 2014年

@Ajay如果此答案适用于您的问题,请考虑接受此答案 :)
masegaloeh 2014年

14

詹金斯建议这样:

H * * * *

2
答案与1岁以上的其他问题的答案相同。
JakeGould 2015年

这将重复另一个答案,并且不会添加任何新内容。除非您确实有新的贡献,否则请不要发布答案。
DavidPostill

4
这种方法的优点是詹金斯将管理队列中的任务。也许其他人已经有了答案,但它仍然有用。如果有用,为什么要如此苛刻?有20个赞的答案不是很好。...bah
juan Isaza

我必须和@juanIsaza一起去。这不是重复的,但实际上是一个更好的答案。詹金斯(Jenkins)明确建议使用H而不是硬编码值
derHugo

9

我知道这是一个老话题,但我正在回答,因为显然人们仍然落在这里。

最佳答案不应该再使用了。

詹金斯提出了一种价值H

该字段遵循cron的语法(略有不同)。具体来说,每行包含5个由TAB或空格分隔的字段:

分钟小时DOM每月

  • 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(“哈希”)。例如,将0 0 * * *用于一打日常工作,将导致午夜时分大幅增加。相比之下,使用HH * * *仍将每天执行一次作业,但并非同时执行所有作业,更好地使用有限的资源。

H符号可以与范围一起使用。例如,HH(0-7)* * *表示介于12:00 AM(午夜)至7:59 AM之间的某个时间。您还可以将步长间隔与H配合使用,无论有无范围。

可以将H符号视为某个范围内的随机值,但实际上它是作业名称的哈希,而不是随机函数,因此该值对于任何给定项目均保持稳定。

请注意,对于月的日字段,由于月份长度的变化,诸如* / 3或H / 3之类的短周期在大多数月份的末尾将无法始终如一地工作。例如,* / 3将在一个月的第一天,第四天,…31天运行,然后在下个月的第二天再次运行。哈希值总是选择在1-28范围内,因此H / 3会在一个月底的3到6天之间产生间隔。(较长的周期也将具有不一致的长度,但效果可能相对不太明显。)

因此,每小时建造一次的正确答案是

H * * * *

每3小时

H H/3 * * *

*和之间的区别H也可以解释为

  • *转换为每个
  • H转换为任何

所以例如

* * * * *

转换为:每月的每一分钟,每小时,每个月,每个月构建,与星期几无关。

H * * * *

转换为:每小时(x)一次构建,确切的分钟数无关紧要(可以是x:00和x:59之间的任何分钟)

H H * * *

转换为:每天构建一次,与时间无关(可以是00:00到23:59之间的任何分钟和任何时间)


H前面也解释了为什么您更喜欢使用而不是硬编码的时间值的原因

如果您配置了100个作业,

0 0 * * *

他们都会尝试同时开始,例如导致大量民意调查,并在午夜吸引流量。

如果您有它们,则全部配置为

H H * * *

它们将每天建造一次,但并非全部同时建造,而是全天分布。


时间表时间范围

您可以比使用时间范围更好地计划时间表,例如

H H(18-23) * * *

所有工作将在每天18:00至23:59之间的任何时间建立。


时间表时间跨午夜

甚至还可以安排午夜时分的工作,例如在19:00 pm和5:00 am之间进行建造。

但是,由于cron通常不允许这样做,因此您可以使用带时区的技巧。

例如,我居住在GMT + 1时区MEZ,我想在19:00 pm至5:00 am之间建立所有工作。为了做到这一点,我使用将我的完整时区偏移了5个小时

TZ=Etc/GMT+6

比起我在14:00(-> +5 = 19:00 pm)到23:59(-> +5 = 4:59 am)结束的小时数,我使用了一个排档范围

H H(14-23) * * *

-1
* */1 * * *

是正确的,它每小时运行一次

尝试使用H函数,以便所有作业不会同时轮询SVN

H H/1 * * *

它应该做魔术。如果作业需要更多时间才能完成,或者您正在执行构建触发器功能。要么增加时间,要么使用jenkins pluggin停止构建,直到先前的构建完成为止。

https://wiki.jenkins-ci.org/display/JENKINS/Build+Blocker+Plugin


第一个运行时间为凌晨1:00至2:00,对吗?
埃里克·王

@EricWang:否。它等于* * * * *=>每分钟运行一次。对于在一定范围内的跑步,您可以像* 1-2 * * *<-这样在1:00 am到1:59 am之间每分钟运行一次
derHugo,

@derHugo你的意思是* * 1-2 * *
Eric Wang

1
@EricWang不,我是说* 1-2 * * *。第一个位置为Minute of our,第二个位置为hour of day,第三个day of month,第四month of year和第五个day of week(在特殊情况下,它也允许第六个year)。因此,您的* * 1-2 * *翻译行会翻译为“每分钟,每小时,每月的第一天和第二天以及一周中的任何一天
。– derHugo

1
该答案的作者错过的区别是*翻译为everyH翻译为any。因此,虽然* * * * *意味着每分钟,但是H * * * *意味着每小时构建一次,但是我不在乎确切的分钟(如果没有由范围定义,则可以在0-59之间的任何位置),并且H H * * *意味着每天构建一次,但是我不在乎什么时间。
derHugo

-5

语法为:


MINUTE  Minutes within the hour (0-59)
HOUR    The hour of the day (0-23)
DOM     The day of the month (1-31)
MONTH   The month (1-12)
DOW     The day of the week (0-7) where 0 and 7 are Sunday.

如果要每3小时进行一次排程,语法应为:

* 3 * * * *

4
这将安排为每天凌晨3点,而不是每3小时一次
lony 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.