我是詹金斯的新手。我有一份工作,我需要每 1 小时安排一次。
我在用
* */1 * * * 
Run Code Online (Sandbox Code Playgroud)
但它没有有效地工作。
请提供任何其他解决方案。
mas*_*oeh 35
詹金斯使用 cron 表达式解释here
要安排每小时,那么你可以把
0 * * * *
Run Code Online (Sandbox Code Playgroud)
然后你的工作将每小时执行一次(07:00、08:00、09:00等等)
更新
作为对原始配置的解释,语法
* */1 * * *
Run Code Online (Sandbox Code Playgroud)
将每分钟执行一次作业。
更新 2
根据评论中的要求,这里的语法每 3 小时安排一次
0 */3 * * *
Run Code Online (Sandbox Code Playgroud)
语法*/n意味着作业将n每小时安排一次
小智 24
詹金斯建议这样:
H * * * *
Run Code Online (Sandbox Code Playgroud)
        der*_*ugo 12
我知道这是一个旧线程,但我正在回答,因为显然人们仍然在这里登陆。
不应再使用最佳答案。
詹金斯引入了一个值H。
该字段遵循 cron 的语法(略有不同)。具体来说,每行由 5 个字段组成,由 TAB 或空格分隔:
分钟 小时 DOM 月 DOW
- MINUTE 一小时内的分钟数 (0–59)
 - HOUR 一天中的小时 (0–23)
 - DOM 一个月中的第几天 (1–31)
 - MONTH 月份 (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 将在一个月的第 1、4、…31 天运行,然后在下个月的第二天再次运行。哈希值始终在 1-28 范围内选择,因此 H/3 将在月末运行 3 到 6 天之间产生间隔。(更长的周期也会有不一致的长度,但效果可能相对不那么明显。)
所以每小时建造一次的正确答案是
H * * * *
Run Code Online (Sandbox Code Playgroud)
每 3 小时
H H/3 * * *
Run Code Online (Sandbox Code Playgroud)
*和之间的区别H也可以解释为
*翻译成每个H翻译成任何所以例如
* * * * *
Run Code Online (Sandbox Code Playgroud)
转化为:每分钟、每小时、每月的每一天、每个月都在构建,无论是星期几。
H * * * *
Run Code Online (Sandbox Code Playgroud)
转换为:每小时构建一次(x),无论它是哪一分钟(可以是 x:00 和 x:59 之间的任何分钟)
H H * * *
Run Code Online (Sandbox Code Playgroud)
转换为:每天构建一次,无论什么时间(可以是 00:00 和 23:59 之间的任何分钟和任何小时)
您应该更喜欢使用H而不是硬编码的时间值的原因也如前所述
如果您配置了 100 个作业
0 0 * * *
Run Code Online (Sandbox Code Playgroud)
它们都将尝试同时启动,例如导致大量轮询并在午夜拉动流量。
如果您将它们全部配置为
H H * * *
Run Code Online (Sandbox Code Playgroud)
它们都将每天构建一次,但不是同时构建,而是在一天内分布。
您可以比使用时间范围更好地计划日程安排,例如
H H(18-23) * * *
Run Code Online (Sandbox Code Playgroud)
所有作业将在每天 18:00 到 23:59 之间的任何时间构建。
甚至还可以安排跨越午夜的作业,例如在晚上 19:00 到早上 5:00 之间构建。
但是由于 cron 通常不允许这样做,您可以使用使用 shiftet 时区的技巧。
例如,我住在 GMT+1 时区 MEZ,我想在晚上 19:00 到凌晨 5:00 之间建立所有工作。为了做到这一点,我使用 5 小时将我的完整时区移动
TZ=Etc/GMT+6
Run Code Online (Sandbox Code Playgroud)
比我使用 shiftet 范围从 14:00 (-> +5 = 19:00pm) 开始到 23:59 (-> +5 = 4:59am) 结束
H H(14-23) * * *
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           121876 次  |  
        
|   最近记录:  |