ฉันใหม่กับเจนกินส์ ฉันมีงานที่ต้องกำหนดทุก 1 ชั่วโมง
ฉันใช้
* */1 * * *
แต่มันไม่ทำงานอย่างมีประสิทธิภาพ
โปรดระบุวิธีแก้ปัญหาอื่น ๆ
@hourly
หรือ0 * * * *
ฉันใหม่กับเจนกินส์ ฉันมีงานที่ต้องกำหนดทุก 1 ชั่วโมง
ฉันใช้
* */1 * * *
แต่มันไม่ทำงานอย่างมีประสิทธิภาพ
โปรดระบุวิธีแก้ปัญหาอื่น ๆ
@hourly
หรือ0 * * * *
คำตอบ:
เจนกินส์ใช้การแสดงออก cron ตามที่อธิบายไว้ที่นี่
หากต้องการกำหนดเวลาทุกชั่วโมงจากนั้นคุณสามารถใส่
0 * * * *
จากนั้นงานของคุณจะถูกดำเนินการทุกชั่วโมง (07:00, 08:00, 09:00 และอื่น ๆ )
UPDATE
เป็นคำอธิบายเกี่ยวกับการกำหนดค่าเดิมของคุณไวยากรณ์
* */1 * * *
จะดำเนินการงานทุกนาที
อัพเดท 2
ตามที่ร้องขอในความคิดเห็นที่นี่ไวยากรณ์สำหรับกำหนดการทุก 3 ชั่วโมง
0 */3 * * *
ไวยากรณ์*/n
หมายถึงงานที่จะจัดตารางเวลาทุกn
ชั่วโมง
เจนกินส์แนะนำวิธีนี้:
H * * * *
H
แทนค่าฮาร์ดโค้ด
ฉันรู้ว่านี่เป็นด้ายเก่า แต่ฉันตอบเพราะเห็นได้ชัดว่าผู้คนยังคงมาที่นี่
คำตอบยอดนิยมไม่ควรใช้อีกต่อไป
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 * * *
ถูกต้องมันทำงานทุกชั่วโมง
ลองใช้ฟังก์ชั่น H เพื่อให้งานทั้งหมดไม่ได้สำรวจในเวลาเดียวกันเพื่อ svn
H H/1 * * *
มันควรจะทำเวทย์มนตร์ หากงานใช้เวลานานกว่าจะเสร็จสิ้น เพิ่มเวลาหรือใช้ปลั๊กอินเจนกินส์เพื่อหยุดการสร้างจนกว่าบิลด์ก่อนหน้านี้จะเสร็จสิ้น
https://wiki.jenkins-ci.org/display/JENKINS/Build+Blocker+Plugin
* * * * *
=> ทำงานทุกนาที สำหรับการทำงานในระหว่างช่วงที่กำหนดคุณใช้เช่น* 1-2 * * *
<- นี่จะทำงานทุกนาทีระหว่าง 1:00 น. และ 1:59 น.
* * 1-2 * *
อะไร
* 1-2 * * *
ไม่มีผมหมายถึง ตำแหน่งแรกคือตำแหน่งMinute of our
ที่สองสำหรับhour of day
ตำแหน่งที่สามที่day of month
สี่month of year
และที่ห้าday of week
(ในกรณีพิเศษก็อนุญาตตำแหน่งที่หกyear
ได้เช่นกัน) ดังนั้นสายของคุณจึง* * 1-2 * *
แปลว่า "ทุกนาทีทุกชั่วโมงวันแรกและวันที่สองของทุกเดือนและวันใด ๆ ของสัปดาห์
*
แปลว่าevery
ในขณะที่แปลว่าH
any
ดังนั้นในขณะที่* * * * *
หมายถึงทุกนาทีH * * * *
หมายถึงการสร้างหนึ่งครั้งทุกชั่วโมง แต่ฉันไม่สนใจนาทีที่แน่นอน (สามารถอยู่ระหว่าง 0-59 ถ้าไม่ได้กำหนดโดยช่วง) และH H * * *
หมายถึงการสร้างหนึ่งครั้งต่อวัน แต่ฉันไม่สนใจเวลา
ไวยากรณ์คือ:
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 * * * *