เครื่องมือสำหรับนักพัฒนา · ตัวสร้าง Crontab
Cron และการปรับเวลาตามฤดูกาล: เหตุใดงาน 02:30 จึงสามารถข้ามหรือรันได้สองครั้ง
· เหตุใดจึงสำคัญ
cron โซนเวลา ประหยัดเวลากลางวัน
นาฬิกาแขวนกระโดดปีละสองครั้ง และงาน cron ที่กำหนดไว้ในช่องว่างหรือการทับซ้อนกันทำงานอย่างไม่คาดคิด โพสต์นี้จะอธิบายว่า crons ที่ได้รับจาก Vixie ทำอะไร คนอื่นทำอะไร และจะกำหนดเวลาอย่างไร
ตัวเลือกการแสดงตัวอย่างที่ขาดหายไปอาจเกิดขึ้นเมื่อโซนที่เลือกไม่มีเวลานาฬิกาแขวนดังกล่าว
เวลานาฬิกาแขวนรายวันอาจไม่มีในวันที่เมื่อโซนเวลาที่เลือกเลื่อนนาฬิกาไปข้างหน้า ToolAcre แสดงถึงกรณีดังกล่าวโดยการส่งคืนไม่โต้ตอบทันทีสำหรับนาทีท้องถิ่นที่ไม่มีอยู่ และข้ามไปในรายการเรียกใช้ถัดไป นิพจน์ยังคงถูกต้อง ผู้สมัครปฏิทินรายหนึ่งไม่สามารถแปลงเป็นเหตุการณ์ทันใจในโซนนั้นได้
ลักษณะการทำงานนี้ถูกนำไปใช้ใน `wallClockToEpoch` ซึ่งจะแปลงวันที่และเวลาท้องถิ่นที่เสนอ จัดรูปแบบผลลัพธ์กลับในโซนเดียวกัน และเปรียบเทียบทุกองค์ประกอบ ไม่ตรงกันส่งกลับค่าว่าง `nextRuns` ละเว้นผู้สมัครที่เป็นโมฆะและทำการค้นหาต่อไป เพื่อป้องกันไม่ให้เวลาใกล้เคียงที่ประดิษฐ์ขึ้นปรากฏขึ้นราวกับว่าตรงกับกำหนดการทุกประการ
เหตุการณ์ทั้งสอง — สปริงไปข้างหน้าซึ่งใช้เวลาหนึ่งชั่วโมง และฤดูใบไม้ร่วงถอยกลับที่เกิดซ้ำหนึ่งครั้ง
การเปลี่ยนแปลงนาฬิกาทำให้เกิดกรณีแนวคิดสองกรณี: ช่องว่างไปข้างหน้าพร้อมเวลาผนังที่ไม่เคยเกิดขึ้น และการทับซ้อนกันแบบย้อนกลับซึ่งบางป้ายกำกับเกิดขึ้นมากกว่าหนึ่งครั้ง พื้นที่เก็บข้อมูลมีการทดสอบเพื่อรักษาชั่วโมงท้องถิ่นรายวันตลอดการเปลี่ยนแปลงไปข้างหน้า และละเว้นเวลาฤดูใบไม้ผลิที่ไม่มีอยู่ ไม่มีชุดทดสอบนโยบายทับซ้อนที่สมบูรณ์
ขอบเขตหลักฐานนั้นมีความสำคัญเนื่องจากการใช้งานตัวกำหนดตารางเวลาสามารถตัดสินใจได้อย่างชัดเจน บทความนี้จะอธิบายเกี่ยวกับอัลกอริทึมการแสดงตัวอย่างเบราว์เซอร์ ไม่ใช่พฤติกรรมของ Universal Daemon ก่อนที่จะใช้งานที่เกิดซ้ำระหว่างการเปลี่ยนสัญญาณนาฬิกา ให้อ่านและทดสอบตัวกำหนดเวลาจริงบนโฮสต์เป้าหมาย แทนที่จะส่งเสริมการแสดงตัวอย่างตามสัญญาการดำเนินการ
ToolAcre ละเว้นเวลาท้องถิ่นที่ไม่มีอยู่ มันไม่ได้สร้างแบบจำลองทุกนโยบาย daemon ที่ได้รับจาก Vixie
สมุดงานอ้างว่า daemons ที่ได้รับจาก Vixie จะรันงานที่ข้ามหลังจากการข้ามและระงับการทำซ้ำ ToolAcre ไม่ได้ทำทั้งสองอย่างในโค้ดแสดงตัวอย่าง โดยละเว้นผู้สมัครที่มีส่วนประกอบในตัวเครื่องไม่สามารถเดินทางไปกลับได้ ไม่มีการเรียกใช้แพ็คเกจ daemon และไม่มีการสร้างแบบจำลองนโยบายที่ตามมา การกล่าวอ้างการปฏิบัติงานเหล่านั้นจึงได้รับการแก้ไขแทนที่จะทำซ้ำ
ตัวอย่างลอนดอนที่ทดสอบแล้วค้นหา 01:30 ประมาณการเปลี่ยนแปลง 2026 เดือนมีนาคม เนื่องจากนาทีท้องถิ่นนั้นไม่มีอยู่ในวันที่เปลี่ยน วันที่ส่งคืนจึงเป็นวันที่ที่ถูกต้องดังต่อไปนี้ นี่เป็นการพิสูจน์พฤติกรรมรายการของเส้นทางเอง มันไม่ได้กำหนดสิ่งที่กระบวนการ cron ที่ติดตั้งแยกต่างหากทำกับบรรทัดที่บันทึกไว้แล้ว
ลักษณะการกำหนดเวลาตัวแทนใน daemons ภายนอกถือเป็นหลักฐานที่เก็บข้อมูลภายนอก
ดาวจะถูกขยายออกไปในทุกค่าที่อนุญาตโดย parser แต่การแปลงนาฬิกาแขวนในภายหลังยังคงตัดสินว่าวันที่-เวลาเฉพาะเจาะจงเป็นแบบทันทีหรือไม่ ToolAcre ไม่มีกฎภายนอก daemon แยกต่างหากสำหรับ "งานไวด์การ์ด" ผู้สมัครทุกคนเดินทางผ่านการค้นหาปฏิทินและรหัสการแปลงโซนเดียวกัน
คำอธิบายยังคงเป็นไวยากรณ์เพียงอย่างเดียว: `* * * * *` อ่านทุกนาที ในขณะที่ฟิลด์นาทีแบบก้าวจะได้รับข้อความแบบเป็นขั้นตอน ประโยคไม่ได้บรรยายถึงนโยบายการเปลี่ยนแปลง ใช้รายการเรียกใช้ถัดไปสำหรับตัวอย่างที่คำนวณของเครื่องมือ และไม่อนุมานถึงการรับประกันที่ตามมา ลองใหม่ หรือปราบปรามซ้ำจากร้อยแก้วเพียงอย่างเดียว
การใช้งานอื่นๆ ไม่ได้อนุมานจากการแสดงตัวอย่างเบราว์เซอร์นี้
การใช้งานโซนอาศัยข้อมูล `Intl.DateTimeFormat` ที่เปิดเผยโดยเบราว์เซอร์หรือรันไทม์ของโหนด ToolAcre ตรวจสอบชื่อโซน IANA ที่ให้มา เสนอรายการที่รองรับของกลไกเมื่อพร้อมใช้งาน และรวม UTC มันไม่ได้ตรวจสอบ BusyBox, ผู้ควบคุมคอนเทนเนอร์ หรือผลิตภัณฑ์ cron บนคลาวด์
เมื่อผู้จัดกำหนดการรายอื่นไม่เห็นด้วย ให้ถือว่าสิ่งนั้นเป็นเพียงคำถามภาษาถิ่นและรันไทม์ บันทึกเวอร์ชัน การกำหนดค่าโซน และลักษณะการเปลี่ยนแปลงที่สังเกตได้ การแสดงตัวอย่างเบราว์เซอร์ยังคงมีประโยชน์ในการเปรียบเทียบอย่างโปร่งใส แต่โค้ดของเบราว์เซอร์ไม่สามารถตอบได้ว่านโยบายใดที่บริการอื่นใช้อยู่ หรือบริการนั้นจะลองทำงานที่พลาดไปอีกครั้งหรือไม่
ตัวอย่างการทำงาน: เลือกเวลากำแพงและตรวจสอบผู้สมัครที่คำนวณแล้วของ ToolAcre
วิธีการทำงานที่ปลอดภัยกว่าคือการเลือกโซนการใช้งาน ป้อนนิพจน์รายวันที่เสนอ และตรวจสอบวันที่รอบการเปลี่ยนแปลงถัดไปที่ทราบในสภาพแวดล้อมนั้น หากไม่มีผู้สมัครที่ต้องการ ให้เลือกเวลาวอลล์อื่นหรือนโยบายกำหนดการที่กำหนดเป้าหมายไว้อย่างชัดเจน เรียกใช้การแสดงตัวอย่างอีกครั้งหลังจากเปลี่ยนชั่วโมง
แหล่งที่มามีการตั้งค่าล่วงหน้าที่ 02:30 แต่การตั้งค่าล่วงหน้าเป็นเพียงตัวอย่าง ไม่ใช่คำแนะนำสากล ความถูกต้องขึ้นอยู่กับปฏิทินและโซนที่เลือก กรอบเวลาผลลัพธ์ทั้งห้าของ ToolAcre อาจไม่ครอบคลุมช่วงการเปลี่ยนผ่านที่ห่างไกล ดังนั้น ให้เลือกบริบทเริ่มต้นที่เหมาะสมในการทดสอบเมื่อตรวจสอบพฤติกรรมการใช้งาน
การเลือกโซนเป็นส่วนหนึ่งของการแสดงตัวอย่างนี้ และจะกล่าวถึงที่นี่เป็นลักษณะการทำงานของเครื่องมือเท่านั้น
การจัดการโซนต่างจากการแยกสมุดงานตรงที่เป็นส่วนหนึ่งของการแสดงตัวอย่างเครื่องมือนี้โดยตรง แผงควบคุมจะถามว่า "แสดงการทำงานถัดไปใน" และเตือนว่าเครื่องที่ทำงาน cron อาจใช้โซนที่แตกต่างจากเครื่องอ่าน การเลือกโซนจะเปลี่ยนช่วงเวลาที่เกิดขึ้นโดยที่ยังคงรักษาช่องนาฬิกาแขวนของนิพจน์ไว้
การเลือกจะกำหนดค่าเฉพาะการคำนวณเบราว์เซอร์เท่านั้น มันไม่ได้เขียนคำสั่งเขตเวลา อัปเดตเซิร์ฟเวอร์ หรือฝังตัวเลือกไว้ในนิพจน์ที่คัดลอก เก็บรักษาโซนที่ต้องการไว้ในเอกสารการปรับใช้ที่อยู่ติดกัน จากนั้นกำหนดค่าตัวกำหนดเวลาจริงผ่านกลไกที่ได้รับการพิสูจน์แล้วสำหรับสภาพแวดล้อมนั้น
Takeaway: ดูตัวอย่างในโซนที่ต้องการโดยไม่ถือว่ารายการเป็นการรับประกันการดำเนินการ
รายการที่รันถัดไปคือเอาต์พุตโมเดลจากห้าฟิลด์ ทันทีเริ่มต้น เลขคณิตปฏิทิน และข้อมูลโซนเบราว์เซอร์ มีประโยชน์ในการตรวจจับเวลาที่ไม่มีอยู่และการเปลี่ยนชั่วโมงโดยไม่ตั้งใจ มันไม่เหลือทั้งร่องรอยของภูตหรือหลักฐานที่แสดงว่าคำสั่งถูกดำเนินการ
ใช้การแสดงตัวอย่างเพื่อระบุเวลาผนังที่มีความเสี่ยง จากนั้นตรวจสอบเครื่องกำหนดเวลาเป้าหมายที่ขอบเขตการเปลี่ยนแปลง ToolAcre ให้คำมั่นสัญญาที่จำกัดไว้: งานรายวันจะคงอยู่ตามเวลาท้องถิ่นที่เลือกเมื่อถึงเวลานั้น และไม่มีผู้สมัครในพื้นที่ที่ไม่มีอยู่จริงจะถูกละเว้น ทุกสิ่งนอกเหนือจากนั้นเป็นของระบบที่ปรับใช้