เครื่องมือสำหรับนักพัฒนา · ตัวสร้าง Crontab
การอ่านออกเสียงนิพจน์ cron: */5 9-17 * * 1-5 กลายเป็นคำได้อย่างไร
· มันทำงานอย่างไร
cron การตรวจสอบโค้ด นักพัฒนาเวิร์กโฟลว์
การแปลสำนวนเป็นภาษาอังกฤษเป็นกระบวนการทางกลเมื่อคุณทราบลำดับแล้ว โพสต์นี้ให้อัลกอริธึมการอ่าน นำไปใช้กับตัวอย่างที่ยุ่งยาก และแสดงให้เห็นว่าคำอธิบายของตัวสร้างช่วยคุณตรวจสอบได้อย่างไร
crontab ในส่วนต่างที่คุณไม่สามารถตรวจสอบได้ — ห้าฟิลด์พร้อมขั้นตอนและช่วง และไม่มีความคิดเห็นอธิบาย
นิพจน์ห้าโทเค็นในคำขอดึงเป็นนโยบายที่สามารถเรียกใช้งานได้ซึ่งบีบอัดเป็นเครื่องหมายวรรคตอน ผู้ตรวจสอบที่จดจำรูปร่างแต่ไม่สามารถพูดกำหนดการดังๆ ได้ มักจะพลาดจุดสิ้นสุดที่ครอบคลุม ขั้นตอนที่วางผิดที่ หรือความสัมพันธ์พิเศษระหว่างฟิลด์สองวัน การแปลจึงเป็นการตรวจสอบความถูกต้อง ไม่ใช่เอกสารประกอบ
ToolAcre ได้มาประโยคจากวัตถุแยกวิเคราะห์ที่ใช้โดยคำเตือนและการแสดงตัวอย่าง วางเฉพาะห้าฟิลด์ โดยปล่อยให้คำสั่งและความลับอยู่ด้านนอก หากถ้อยคำที่สร้างขึ้นแตกต่างจากความคิดเห็นของผู้เขียน ให้หยุดการทบทวนชั่วคราวและแก้ไขเจตนาก่อนที่จะติดตั้งนิพจน์ที่ใดก็ได้
อ่านช่องวันก่อน วันในสัปดาห์และเดือนจะบอกคุณว่าวันไหน จากนั้นนาทีและชั่วโมงจะบอกคุณว่าเมื่อใด
ขอบเขตของปฏิทินนั้นง่ายที่สุดในการสร้างก่อนรายละเอียดนาฬิกา เดือนและวันธรรมดาเผยให้เห็นส่วนใดของปีหรือสัปดาห์ที่มีสิทธิ์ วันของเดือนอาจเพิ่มเงื่อนไขปฏิทินอื่น ชั่วโมงและนาที จากนั้นให้วิ่งภายในวันที่ตรงกัน ลำดับการอ่านนี้มีไว้สำหรับการตรวจสอบโดยมนุษย์ ในขณะที่ลำดับตำแหน่งของนิพจน์ที่จัดเก็บไว้ยังคงเป็นลำดับรองลงมา
ถามเสมอว่าฟิลด์ทั้งสองวันถูกจำกัดหรือไม่ หากเป็นเช่นนั้น ToolAcre จะรวมเครื่องหมาย "หรือ" และส่งคำเตือน อ่านแบบสบายๆ เมื่อตัวกรอง AND ที่อยู่ติดกันเปลี่ยนกำหนดการ สัญลักษณ์แทนในช่องหนึ่งวันจะลบความกำกวมนั้นออก และปล่อยให้อีกช่องทำหน้าที่เป็นข้อจำกัดเพียงวันเดียว
การแปลแต่ละโทเค็น — * เป็น 'ทุก' ตัวเลขเป็น 'at' ช่วงเป็น 'จาก–ถึง' ขั้นตอนเป็น 'ทุก N เริ่มต้นที่'
ดาวหมายถึงทุกค่าที่อนุญาตในตำแหน่งนั้น ตัวเลขเลือกหนึ่งค่า ยัติภังค์จะรวมทุกค่าระหว่างจุดสิ้นสุด เครื่องหมายจุลภาครวมรายการต่างๆ และเครื่องหมายทับจะสุ่มตัวอย่างทุกๆ ค่าที่ n จากจุดเริ่มต้นของสัญลักษณ์ตัวแทน ช่วง หรือจุดเริ่มต้นเปล่า ค่าต่ำสุดของฟิลด์จะกำหนดว่าขั้นตอนไวด์การ์ดจะเริ่มต้นที่ใด
ชื่อได้รับการยอมรับสำหรับเดือนและวันธรรมดาโดยไม่คำนึงถึงกรณี รวมถึงช่วงเช่น `JAN-MAR` และ `MON-FRI` วันอาทิตย์อาจเขียนว่า 0 หรือ 7 และปรับมาตรฐานเป็น 0 โค้ดคำอธิบายจะแปลงค่าขยายที่ต่อเนื่องกันเป็นข้อความ "ผ่าน" และค่าที่ไม่ต่อเนื่องกันเป็นรายการที่อ่านได้
ตัวอย่างการทำงาน: เครื่องมืออธิบายชั่วโมงที่เลือก ในขณะที่ค่านาทีที่ขยายระบุการทำงานครั้งสุดท้าย
`*/5 9-17 * * 1-5` เลือกค่านาที 0 ถึง 55 ในขั้นละ 5 ชั่วโมง 9 ถึง 17 และวันธรรมดา วันจันทร์ถึงวันศุกร์ เครื่องมือนี้จะอธิบายการก้าวนาทีในช่วงเวลาที่เลือก การขยายค่าจะแสดงให้เห็นว่าตัวเลือกสุดท้ายใน 17 ชั่วโมงที่รวมไว้คือ 17:55
ผู้สมัครคนสุดท้ายนั้นมักจะพลาดเมื่อ “9-17” ถูกถอดความว่าเป็นขอบเขตวันทำการ Cron เลือกค่าชั่วโมงที่สมบูรณ์ จากนั้นรวมเข้ากับนาทีที่เลือกทั้งหมด หากเจตนาลงท้ายด้วย 17:00 สำนวนนี้ไม่สามารถตรวจทานได้ว่าถูกต้องเพียงเพราะคำว่า "เก้าถึงห้า" ฟังดูคุ้นเคย
ตัวอย่างการทำงาน: 0 0 1,15 * 3 — อ่านฟิลด์วันหรือออกกฎดัง ๆ เพื่อไม่ให้พลาด
ตอนนี้อ่าน `0 0 1,15 * 3` เลือกเที่ยงคืนแล้ว วันที่ของเดือนคือวันที่หนึ่งหรือสิบห้า และวันธรรมดาคือวันพุธ เนื่องจากเขตข้อมูลทั้งสองวันถูกจำกัด เงื่อนไขปฏิทินจึงเป็นวันที่หนึ่งหรือสิบห้าของแต่ละเดือน หรือทุกวันพุธ ไม่ใช่ “วันพุธที่วันที่คือ 1 หรือ 15”
คำเตือนของ ToolAcre ทำให้สหภาพดังกล่าวโดดเด่น และคำอธิบายมีคำว่า "หรือ" แทรกอยู่ การแสดงตัวอย่างครั้งต่อไปจะให้วันที่ที่เป็นรูปธรรมสำหรับโซนที่เลือก ทบทวนผลลัพธ์ทั้งสามเพราะประโยคที่คล่องแคล่วเพียงอย่างเดียวอาจยังปกปิดว่าข้อกำหนดพื้นฐานคือจุดตัดที่ภาษาถิ่นไม่สามารถแสดงออกได้โดยตรง
เก็บความคิดเห็นโดยเจตนาหลังจากตรวจสอบกับนิพจน์แล้วเท่านั้น
ความคิดเห็นเหนือนิพจน์สามารถรักษาเจตนาได้ แต่ยังสามารถรักษาคำโกหกเก่าๆ หลังจากที่ช่องมีการเปลี่ยนแปลงได้อีกด้วย สร้างหรือสร้างประโยคใหม่ด้วยตนเองจากโทเค็นปัจจุบันในระหว่างการตรวจสอบ หากการแก้ไขเปลี่ยน `0` เป็น `*/5` ให้อัปเดตความคิดเห็นหลังจากยืนยันชุดนาทีที่ขยายและการรันครั้งสุดท้ายเท่านั้น
ชอบความคิดเห็นที่ระบุข้อสันนิษฐานของโซนนาฬิกาแขวนและความถี่ นิพจน์นี้ไม่มีฟิลด์เขตเวลา ในขณะที่ตัวอย่างของ ToolAcre ขอให้ผู้วิจารณ์เลือกอย่างใดอย่างหนึ่ง หมายเหตุดังกล่าวช่วยให้บุคคลอื่นสร้างรายการเดียวกันซ้ำได้โดยไม่ต้องบอกเป็นนัยว่าตัวเลือกเบราว์เซอร์จะกำหนดค่าตัวกำหนดตารางเวลาในที่สุด
ไวยากรณ์หกและเจ็ดฟิลด์ถูกปฏิเสธ ไม่ได้รับการแปล
โปรแกรมแยกวิเคราะห์ต้องมีห้าฟิลด์พอดี ข้อมูลเข้าแบบ 6 ฟิลด์จะได้รับคำอธิบายเฉพาะเกี่ยวกับรูปแบบวินาทีนำหน้า แบบฟอร์มที่ยาวกว่าจะไม่ถูกตีความ ToolAcre ไม่มีฟิลด์ปีเช่นกัน ดังนั้นอัลกอริธึมภาษาอังกฤษธรรมดาในบทความนี้จึงใช้ได้กับไวยากรณ์ห้าฟิลด์ของที่เก็บเท่านั้น
อย่าตัดฟิลด์ออกจาก Quartz, Spring หรือผลิตภัณฑ์อื่นจนกว่าข้อความที่เหลือจะตรวจสอบความถูกต้อง โอเปอเรเตอร์ที่ไม่รองรับอาจมีความหมายที่สำคัญได้ การแปลต้องใช้เอกสารประกอบสำหรับทั้งสองระบบ ในขณะที่ตัวสร้างนี้ให้หลักฐานเฉพาะค่า ชื่อ ช่วง รายการ ขั้นตอน ไวด์การ์ด และนามแฝงที่ยอมรับเท่านั้น
ประเด็นสำคัญ: ทุกสำนวนมีประโยค — และเครื่องสร้าง Crontab จะสร้างประโยคนั้นขึ้นมาเพื่อให้คุณสามารถเปรียบเทียบกับเจตนาได้
ทุกนิพจน์ที่รองรับสามารถขยายเป็นค่าฟิลด์จำกัดและประโยคปฏิทินได้ การอ่านค่าเหล่านั้นจะทำให้ผู้สมัครได้เปรียบซึ่งละเว้นวลีที่ไม่เป็นทางการ นอกจากนี้ยังบังคับใช้กฎเขตข้อมูลวันหรือกฎในการสนทนาก่อนที่กำหนดการจะถึงโฮสต์การปฏิบัติงาน
สำหรับการตรวจสอบ ให้วางนิพจน์ เปรียบเทียบคำอธิบายที่สร้างขึ้นกับข้อกำหนดที่ระบุไว้ ตรวจสอบคำเตือน และตัวอย่างเวลาที่จะเกิดขึ้น เก็บความคิดเห็นที่เป็นผลลัพธ์ไว้ข้างบรรทัด แต่ให้ถือว่านิพจน์ที่แยกวิเคราะห์เป็นแหล่งปฏิบัติการ ตัวสร้างจะอธิบายจุดประสงค์ของกำหนดการ มันไม่ได้ยืนยันถึงคำสั่งหรือการติดตั้ง