ต้องการจัดตารางเวลางานทุกชั่วโมงในเจนกินส์


16

ฉันใหม่กับเจนกินส์ ฉันมีงานที่ต้องกำหนดทุก 1 ชั่วโมง

ฉันใช้

* */1 * * * 

แต่มันไม่ทำงานอย่างมีประสิทธิภาพ

โปรดระบุวิธีแก้ปัญหาอื่น ๆ


3
คุณควรอธิบายว่า "แต่มันไม่ทำงานอย่างมีประสิทธิภาพ" วิธี และเพิ่มในรายการ distro & cronttab ของคุณ
Sathyajith Bhat

ใช้@hourlyหรือ0 * * * *
Renju Chandran chingath

ขอบคุณ กรุณาพูดถึงไวยากรณ์ถ้าฉันต้องการกำหนดทุก 3 ชั่วโมง
Ajay

ใช้: H / 60 * * * *
Eyal Sooliman

คำตอบ:


31

เจนกินส์ใช้การแสดงออก cron ตามที่อธิบายไว้ที่นี่

หากต้องการกำหนดเวลาทุกชั่วโมงจากนั้นคุณสามารถใส่

0 * * * *

จากนั้นงานของคุณจะถูกดำเนินการทุกชั่วโมง (07:00, 08:00, 09:00 และอื่น ๆ )

UPDATE

เป็นคำอธิบายเกี่ยวกับการกำหนดค่าเดิมของคุณไวยากรณ์

* */1 * * *

จะดำเนินการงานทุกนาที

อัพเดท 2

ตามที่ร้องขอในความคิดเห็นที่นี่ไวยากรณ์สำหรับกำหนดการทุก 3 ชั่วโมง

0 */3 * * *

ไวยากรณ์*/nหมายถึงงานที่จะจัดตารางเวลาทุกnชั่วโมง


ขอบคุณสำหรับคำตอบมันใช้งานได้ดี แต่งานของฉันใช้เวลามากกว่าหนึ่งชั่วโมงในการดำเนินการ ตัวอย่างเช่นถ้าฉันต้องการกำหนดเวลางานนี้ทุก ๆ 3 ชั่วโมงสิ่งที่จะเป็นการแชร์ syntax.please
Ajay

ตรวจสอบคำตอบที่อัปเดตของฉัน :)
masegaloeh

@Ajay หากงานของคำตอบนี้สำหรับปัญหาของคุณโปรดพิจารณาที่จะยอมรับคำตอบนี้ :)
masegaloeh

14

เจนกินส์แนะนำวิธีนี้:

H * * * *

2
เช่นเดียวกับคำตอบอื่น ๆ สำหรับคำถามที่มีอายุ 1 ปีขึ้นไป
JakeGould

เป็นการทำซ้ำคำตอบอื่นและไม่เพิ่มเนื้อหาใหม่ โปรดอย่าโพสต์คำตอบเว้นแต่ว่าคุณมีสิ่งใหม่ที่จะมีส่วนร่วม
DavidPostill

4
ข้อดีของวิธีนี้คือเจนกินส์จะจัดการงานในคิว บางทีคนอื่นอาจมีคำตอบอยู่แล้วแต่ก็ยังมีประโยชน์ จะรุนแรงทำไมถ้ามันมีประโยชน์? คำตอบที่มี 20 ไลค์ไม่ค่อยดี .... bah
juan Isaza

ฉันต้องไปกับ @juanIsaza นี่ไม่ใช่คำซ้ำกัน แต่เป็นคำตอบที่ดีกว่า เจนกินส์แนะนำอย่างชัดเจนว่าชอบการใช้งานHแทนค่าฮาร์ดโค้ด
derHugo

9

ฉันรู้ว่านี่เป็นด้ายเก่า แต่ฉันตอบเพราะเห็นได้ชัดว่าผู้คนยังคงมาที่นี่

คำตอบยอดนิยมไม่ควรใช้อีกต่อไป

Hเจนกินส์แนะนำค่า

ฟิลด์นี้ตามด้วยไวยากรณ์ของ cron (มีความแตกต่างเล็กน้อย) โดยเฉพาะแต่ละบรรทัดประกอบด้วย 5 ฟิลด์คั่นด้วย TAB หรือช่องว่าง:

นาทีต่อเดือน DOM DOW เดือน

  • MINUTE นาทีภายในหนึ่งชั่วโมง (0–59)
  • ชั่วโมงชั่วโมงของวัน (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 น. (เที่ยงคืน) ถึง 7:59 น. คุณยังสามารถใช้ช่วงเวลาแบบขั้นตอนกับ H โดยมีหรือไม่มีช่วงก็ได้

สัญลักษณ์ H สามารถคิดได้ว่าเป็นค่าสุ่มในช่วง แต่จริงๆแล้วมันคือแฮชของชื่องานไม่ใช่ฟังก์ชันสุ่มดังนั้นค่าจะยังคงมีเสถียรภาพสำหรับโปรเจ็กต์ที่กำหนด

ระวังว่าสำหรับฟิลด์วันของเดือนรอบสั้นเช่น * / 3 หรือ H / 3 จะไม่ทำงานอย่างต่อเนื่องใกล้ถึงสิ้นเดือนส่วนใหญ่เนื่องจากความยาวของเดือนแปรผัน ตัวอย่างเช่น * / 3 จะทำงานในวันที่ 1, 4, ... วันที่ 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 * * *

พวกเขาทั้งหมดจะถูกสร้างขึ้นวันละครั้ง แต่ไม่ใช่ทั้งหมดในเวลาเดียวกัน แต่จะถูกกระจายข้ามวัน


ช่วงเวลาที่กำหนด

คุณสามารถวางแผน schdedule ได้ดีกว่าโดยใช้ช่วงเวลาเช่น

H H(18-23) * * *

งานทั้งหมดจะถูกสร้างขึ้นทุกวันทุกเวลาระหว่างเวลา 18:00 น. - 23:59 น.


ช่วงเวลากำหนดการข้ามเที่ยงคืน

นอกจากนี้ยังเป็นไปได้ที่จะจัดตารางเวลางานข้ามเที่ยงคืนเช่นเพื่อสร้างระหว่าง 19:00 น. ถึง 5:00 น.

แต่เนื่องจาก cron มักจะไม่อนุญาตให้ทำเช่นนี้คุณจึงสามารถใช้เคล็ดลับโดยใช้เขตเวลา shiftet

เช่นฉันอาศัยอยู่ในเขตเวลา MEZ ซึ่งเป็น GMT + 1 และฉันต้องการสร้างงานทั้งหมดระหว่างเวลา 19:00 น. ถึง 17:00 น. ในการทำเช่นนั้นฉันเปลี่ยนเขตเวลาทั้งหมดโดยใช้เวลา 5 ชั่วโมง

TZ=Etc/GMT+6

กว่าที่ฉันจะใช้ช่วง shiftet สำหรับชั่วโมงที่เริ่มต้นที่ 14:00 (-> +5 = 19:00 น.) และสิ้นสุดที่ 23:59 (-> +5 = 4:59 am)

H H(14-23) * * *

-1
* */1 * * *

ถูกต้องมันทำงานทุกชั่วโมง

ลองใช้ฟังก์ชั่น H เพื่อให้งานทั้งหมดไม่ได้สำรวจในเวลาเดียวกันเพื่อ svn

H H/1 * * *

มันควรจะทำเวทย์มนตร์ หากงานใช้เวลานานกว่าจะเสร็จสิ้น เพิ่มเวลาหรือใช้ปลั๊กอินเจนกินส์เพื่อหยุดการสร้างจนกว่าบิลด์ก่อนหน้านี้จะเสร็จสิ้น

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


คนแรกวิ่งทุกนาทีระหว่าง 1:00 น. ถึง 2:00 น. ใช่มั้ย
Eric Wang Wang

@EricWang: ไม่มันเหมือนกับ* * * * *=> ทำงานทุกนาที สำหรับการทำงานในระหว่างช่วงที่กำหนดคุณใช้เช่น* 1-2 * * *<- นี่จะทำงานทุกนาทีระหว่าง 1:00 น. และ 1:59 น.
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
ความแตกต่างที่ผู้เขียนของคำตอบนี้พลาดคือ*แปลว่าeveryในขณะที่แปลว่าH 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
จะมีการกำหนดเวลา 15.00 น. ทุกวันและไม่ใช่ทุก ๆ 3 ชั่วโมง
lony
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.