เครื่องมือสำหรับนักพัฒนา · ตัวสร้าง Crontab
เครื่องหมายเปอร์เซ็นต์ ราคา และตัวแปร: เหตุใดเส้น cron จึงแตกอย่างเงียบๆ
· เหตุใดจึงสำคัญ
cron เปลือก การตรวจสอบ
บรรทัด crontab ไม่ใช่บรรทัดเชลล์ และอักขระบางตัวมีความหมายอย่างอื่นในนั้น โพสต์นี้จะอธิบายกฎเครื่องหมายเปอร์เซ็นต์ ขีดจำกัดการกำหนดตัวแปร และเครื่องหมายคำพูด ดังนั้นคำสั่งต่างๆ จะดำเนินการเหมือนที่ทำในเทอร์มินัล
ความล้มเหลวของชื่อไฟล์หลังจากฟิลด์ที่ห้าไม่สามารถวินิจฉัยโดยตัวแยกวิเคราะห์นิพจน์นี้
หากชื่อไฟล์สำรองข้อมูลที่สร้างขึ้นว่างเปล่า นิพจน์การกำหนดเวลาอาจยังถูกต้อง `0 3 * * *` เลือก 03:00 ทุกวัน อักขระหลังฟิลด์ที่ห้าไม่เคยป้อน parser ของ ToolAcre ความล้มเหลวฝั่งคำสั่งไม่ควร "แก้ไข" ด้วยการเปลี่ยนนาทีหรือชั่วโมง เว้นแต่การแสดงตัวอย่างขัดแย้งกับเจตนา
แยกสายก่อนการวินิจฉัย วางห้าฟิลด์แรกลงในตัวสร้าง อ่านคำอธิบาย และบันทึกเวลาที่จะเกิดขึ้น ทดสอบคำสั่งที่เหลือด้วยการใช้งาน cron และเชลล์จริง การแบ่งส่วนนี้จะป้องกันไม่ให้ไวยากรณ์ปฏิทินและไวยากรณ์คำสั่งถูกดีบั๊กราวกับว่าเป็นภาษาเดียว
ซีแมนทิกส์คำสั่งเครื่องหมายเปอร์เซ็นต์ไม่ได้ถูกนำมาใช้หรือทดสอบที่นี่
สมุดงานระบุการแปลงเครื่องหมายเปอร์เซ็นต์แบบพิเศษ ไม่มี lexer ที่สอดคล้องกันใน `cron.js`; เครื่องอ่านภาคสนามยอมรับตัวเลข ชื่อที่รองรับ และเครื่องหมายวรรคตอนที่ใช้ตามช่วง รายการ และขั้นตอน UI ยังหยุดการแยกวิเคราะห์หลังจากกล่องนิพจน์ ไม่สามารถแสดงให้เห็นสิ่งที่เกิดขึ้นกับอักขระเปอร์เซ็นต์ในคำสั่งที่ปรับใช้
เนื่องจากการใช้งาน cron และตัวแยกวิเคราะห์ไฟล์ที่สมบูรณ์อาจแตกต่างกัน บทความนี้จึงไม่ทำให้กฎนั้นเป็นสากลจากโครงร่างที่ไม่ได้รับการตรวจสอบ ศึกษาคู่มือเป้าหมายและทำซ้ำโดยใช้ข้อมูลที่ไม่เป็นอันตราย คำอธิบายกำหนดการของเบราว์เซอร์ไม่ใช่หลักฐานเกี่ยวกับการสร้าง stdin การแปลงขึ้นบรรทัดใหม่ หรือการจัดการเพย์โหลดคำสั่ง
คำแนะนำในการหลบหนีต้องใช้หลักฐานเฉพาะเป้าหมายและละไว้
การหลีกแบ็กสแลชเช่นเดียวกันเป็นของไวยากรณ์คำสั่ง ToolAcre ไม่สามารถบอกได้ว่าเลเยอร์หนึ่งใช้แบ็กสแลชก่อนหน้าเลเยอร์อื่นหรือไม่ และจะไม่เรียกใช้เชลล์เพื่อสังเกตผลลัพธ์ การเผยแพร่บรรทัดที่พร้อมสำหรับการทำสำเนาจึงอาจเกินหลักฐานแหล่งที่มาและอาจผิดสำหรับเป้าหมายอื่น
ย้ายการสร้างคำสั่งที่ซับซ้อนไปยังสคริปต์ที่ทดสอบแยกกันเมื่อเหมาะสมกับสภาพแวดล้อม แต่ตรวจสอบวิธีการนั้นที่นั่น รักษาสำนวนให้คงที่ขณะทำการทดลอง การอ้างสิทธิ์ที่สามารถป้องกันได้เพียงอย่างเดียวจากที่เก็บนี้คือสามารถคัดลอกฟิลด์กำหนดเวลาห้าฟิลด์ได้อย่างอิสระจากคำสั่งใดก็ตามที่ตามมา
การกำหนดตัวแปรไม่ได้รับการยอมรับอินพุตนิพจน์
บรรทัด `KEY=value` ไม่มีฟิลด์กำหนดการห้าฟิลด์ และถูกปฏิเสธโดย parser นี้ ไม่มีโมเดลการกำหนด กลไกการขยาย หรือตารางสภาพแวดล้อมในเครื่องมือ ไม่ว่า crontab จริงจะยอมรับการมอบหมายงานหรือไม่และวิธีตีความค่าของมันจะต้องได้รับการพิสูจน์จากระบบนั้น
ความแตกต่างนี้ช่วยปกป้องการสนทนาเรื่องการพกพา ToolAcre ยอมรับ `JAN` เนื่องจากชื่อเดือนไม่ได้พูดอะไรเกี่ยวกับ `$HOME` ในบรรทัดการกำหนดค่า ทั้งสองอาจปรากฏในไฟล์ crontab ไฟล์เดียว แต่มีเพียงนิพจน์ปฏิทินเท่านั้นที่เป็นของไวยากรณ์ที่นำไปใช้ซึ่งได้รับการตรวจสอบสำหรับบทความเหล่านี้
ราคาและการเลือกเชลล์อยู่นอกเหนือขอบเขตของตัวสร้าง
เครื่องหมายคำพูดเป็นอักขระธรรมดาหลังจากขอบเขตกำหนดการเท่านั้น ซึ่ง ToolAcre ไม่เคยข้าม กฎห้าฟิลด์ที่แน่นอนจะถือว่าโทเค็นช่องว่างพิเศษเป็นนิพจน์ที่ไม่ถูกต้อง แทนที่จะพยายามค้นหาคำสั่งที่ยกมา บรรทัดตัวยึดตำแหน่งที่คัดลอกไว้คือความสะดวกในการส่งออก ไม่ใช่เครื่องมือตรวจสอบแบบเต็มบรรทัด
การเลือกเชลล์ก็ขาดเช่นกัน ไม่มี `spawn`, `exec` หรือตัวแปลคำสั่งในพาธต้นทาง ทดสอบการเสนอราคาภายใต้สภาพแวดล้อมที่ปฏิบัติการได้ซึ่งจะได้รับจริง และหลีกเลี่ยงการอ้างว่าตัวสร้างได้อนุมัติบรรทัดเพียงเพราะคำนำหน้าเวลายังคงใช้ได้
ขอบเขตการทำงาน: ตรวจสอบความถูกต้อง 0 3 * * * เป็นอิสระจากคำสั่งที่ประทับวันที่
สำหรับข้อกำหนดการสำรองข้อมูลที่มีการประทับวันที่ ให้ตรวจสอบ `0 3 * * *` ก่อน เครื่องมือควรอธิบาย 03:00 ทุกวัน และแสดงผู้สมัครในโซนที่เลือก เก็บรักษาส่วนที่ได้รับการยืนยันนั้นไว้ จากนั้นสร้างการทดสอบฝั่งคำสั่งที่ไม่เป็นอันตรายซึ่งแสดงชื่อไฟล์ที่ต้องการภายใต้ตัวกำหนดเวลาเป้าหมาย
การตรวจสอบที่แยกจากกันสองครั้งจะสร้างหลักฐานที่ชัดเจนยิ่งขึ้น: ภาพหน้าจอหนึ่งภาพหรือการยืนยันเจตนาของปฏิทิน และเอาต์พุตที่บันทึกไว้อีกรายการหนึ่งสำหรับการแปลงคำสั่ง หากชื่อไฟล์ผิดแต่เวลาที่ผู้สมัครถูกต้อง กำหนดการไม่จำเป็นต้องแก้ไข หากผิดทั้งสองภาษา ให้กล่าวถึงแต่ละภาษาด้วยเอกสารประกอบของแต่ละภาษา
สิ่งนี้ไม่ครอบคลุมถึง - สภาพแวดล้อมและปัญหา PATH ครอบคลุมอยู่ในโพสต์ของตนเอง
สภาพแวดล้อมและพฤติกรรมของเส้นทางยังคงอยู่ภายนอกตัวสร้าง ดังนั้นบทความนี้จึงไม่เปลี่ยนเส้นทางหัวข้อเหล่านั้นไปยังวิธีแก้ปัญหาอื่นที่ไม่ได้รับการสนับสนุน โดยจะรายงานขอบเขตแทน: เส้นทางจะสร้างนิพจน์ห้าฟิลด์ คำอธิบายในภาษาธรรมดา คำเตือน และตัวเลือกนาฬิกาแขวนในอนาคต
การใช้งาน cron ที่สมบูรณ์จำเป็นต้องมีหลักฐานมากกว่านั้น ถือว่าอักขระพิเศษ ตัวแปร และความละเอียดที่ปฏิบัติการได้เป็นข้อกังวลด้านโฮสต์ การที่ตัวสร้างปฏิเสธที่จะแยกวิเคราะห์พวกมันมีประโยชน์เพราะจะป้องกันไม่ให้เครื่องมือปฏิทินแคบ ๆ แสร้งทำเป็นว่าเข้าใจความหมายของคำสั่ง
Takeaway: รู้ว่าตัวละคร cron เป็นเจ้าของ — และรักษาตารางเวลาให้ถูกต้องด้วยตัวสร้างในขณะที่คุณแก้ไขคำสั่ง
บรรทัด Cron สามารถมีสองไวยากรณ์คั่นด้วยตำแหน่ง ToolAcre ใช้ไวยากรณ์แรกเท่านั้น โดยสิ้นสุดหลังจากวันในสัปดาห์ เครื่องหมายเปอร์เซ็นต์ เครื่องหมายคำพูด และตัวแปรอาจมีความสำคัญในภายหลัง แต่ไม่สามารถเปลี่ยนความหมายของ `0 3 * * *` ในตัวแยกวิเคราะห์นี้ได้
แยกคำถามเหล่านั้นออกจากกันในการทบทวนและบันทึกเหตุการณ์ ตรวจสอบจุดประสงค์ของกำหนดการในเบราว์เซอร์ จากนั้นตรวจสอบพฤติกรรมคำสั่งบนเป้าหมายด้วยข้อมูลที่ไม่ละเอียดอ่อน ซึ่งสร้างหลักฐานมากกว่านิทานพื้นบ้านและหลีกเลี่ยงการฟอกสมุดงานเพื่อรับประกันว่ารหัสไม่เคยทำ