Cron เป็นบริการจัดตารางงานตามเวลาที่พบในระบบปฏิบัติการแบบ Unix ผู้ใช้กำหนดเวลางาน (คำสั่งหรือสคริปต์) เพื่อให้ทำงานเป็นระยะตามเวลา วันที่ หรือช่วงเวลาที่กำหนด
ต้นกำเนิดและประวัติศาสตร์ตอนต้นของครอน
การใช้งานครั้งแรกของ cron ย้อนกลับไปในเวอร์ชัน 7 Unix คำว่า "ครอน" มาจากคำภาษากรีกที่แปลว่าเวลา "โครโนส" Unix เวอร์ชันนี้เปิดตัวในปี 1979 มีโปรแกรม cron ธรรมดาที่รันงานตามช่วงเวลาที่กำหนด ฟังก์ชันของ Cron ได้รับการขยายในภายหลังโดย Paul Vixie ในปี 1987 เวอร์ชันนี้เรียกว่า Vixie Cron เป็นเวอร์ชันที่มีการติดตั้งบ่อยที่สุดในปัจจุบัน และเป็นเวอร์ชันที่คนทั่วไปพูดถึงเมื่อมีคนพูดถึง "Cron"
การขยายแนวคิดของ Cron
Cron ช่วยให้ผู้ใช้สามารถบำรุงรักษาหรือดูแลระบบได้โดยอัตโนมัติ แม้ว่าลักษณะการใช้งานทั่วไปจะทำให้มีประโยชน์สำหรับสิ่งต่างๆ เช่น การดาวน์โหลดไฟล์จากอินเทอร์เน็ตและการดาวน์โหลดอีเมลตามช่วงเวลาปกติ สภาพแวดล้อม cron เปรียบเสมือนแซนด์บ็อกซ์ที่งาน cron หมดลงจากสภาพแวดล้อมเชลล์ปกติ
ผู้ใช้แต่ละคนสามารถมี crontab ของตนเองได้ และแม้ว่าไฟล์เหล่านี้จะเป็นไฟล์ใน /var/spool/ แต่ก็ไม่ได้ตั้งใจให้แก้ไขโดยตรง ไวยากรณ์ของนิพจน์ cron สามารถแบ่งออกเป็นสองประเภทหลักๆ ของไวยากรณ์: ไวยากรณ์ cron ของ Unix และไวยากรณ์ที่ซับซ้อนมากขึ้นที่เรียกว่า ไวยากรณ์นิพจน์ cron หรือไวยากรณ์ cron ควอตซ์
โครงสร้างภายในของ Cron และวิธีการทำงาน
Cron ทำงานบนพื้นฐานของไฟล์กำหนดค่าที่เรียบง่ายแต่ทรงพลังที่เรียกว่าไฟล์ “crontab” ไฟล์นี้ประกอบด้วยหนึ่งบรรทัดสำหรับแต่ละงานที่จะรัน ประกอบด้วยฟิลด์เวลาและวันที่ห้าฟิลด์ ตามด้วยคำสั่งที่จะรันตามเวลาที่กำหนด
ห้าฟิลด์แสดงถึง:
- นาทีหลังชั่วโมง (0 – 59)
- ชั่วโมงในหนึ่งวัน (0 – 23)
- วันในหนึ่งเดือน (1 – 31)
- เดือนในหนึ่งปี (1 – 12)
- วันในสัปดาห์ (0 – 7 โดยที่ 0 และ 7 คือวันอาทิตย์)
ฟิลด์คำสั่งประกอบด้วยงานที่จะรันตามเวลาที่ระบุในห้าฟิลด์แรก
คุณสมบัติที่สำคัญของครอน
คุณสมบัติหลักของ Cron ได้แก่ :
- ช่วยให้งานทำงานโดยอัตโนมัติในพื้นหลังตามช่วงเวลาที่สม่ำเสมอ
- มีแพลตฟอร์มที่ยืดหยุ่นในการกำหนดเวลางาน (สคริปต์หรือคำสั่ง) ด้วยหน่วยเวลาที่หลากหลาย
- ผู้ใช้แต่ละคนสามารถมีไฟล์ crontab ของตนเองได้
- งาน Cron สามารถกำหนดเวลาให้รันเป็นนาที ชั่วโมง วันในสัปดาห์ วันของเดือน และเดือนของปีได้
- Cron มอบวิธีที่ง่ายและมีประสิทธิภาพในการทำให้งานของระบบต่างๆ เป็นแบบอัตโนมัติ
ประเภทของครอน
งาน Cron โดยทั่วไปสามารถแบ่งได้ดังนี้:
พิมพ์ | คำอธิบาย |
---|---|
รีบูต | ทำงานหนึ่งครั้งเมื่อเริ่มต้น |
อนาครอน | ทำงานตามช่วงเวลาที่ระบุเป็นวัน |
ระบบครอน | เก็บไว้ใน /etc/crontab และในไดเร็กทอรี /etc/cron.d/ สิ่งเหล่านี้มีวัตถุประสงค์เพื่อให้ทั่วทั้งระบบ |
ผู้ใช้ครอน | ผู้ใช้แต่ละคนสามารถมีของตนเองได้ และจะถูกจัดเก็บไว้ใน /var/spool/cron/crontabs/ |
การใช้งาน Cron ปัญหา และแนวทางแก้ไข
Cron มีประโยชน์สำหรับงานอัตโนมัติ แต่อาจทำให้เกิดปัญหาได้หากไม่ได้ใช้อย่างระมัดระวัง ตัวอย่างเช่น งาน cron ที่กำหนดค่าไม่ถูกต้องอาจทำให้มีการใช้งาน CPU สูง นอกจากนี้ cron จะส่งอีเมลเฉพาะผลลัพธ์ของงาน (ถ้ามี) ไปยังผู้ใช้ที่รันงานนั้นด้วย ซึ่งอาจทำให้เกิดข้อผิดพลาดที่พลาดได้หากไม่ได้ตรวจสอบเป็นประจำ
วิธีแก้ไขปัญหาทั่วไปสำหรับปัญหาเหล่านี้ ได้แก่:
- ตรวจสอบการใช้งาน CPU สูงเป็นประจำ และกำหนดค่าใหม่หรือหยุดงานที่ไม่จำเป็น
- ตรวจสอบให้แน่ใจว่าคำสั่งและสคริปต์ทั้งหมดทำงานอย่างถูกต้องก่อนตั้งค่าเป็นงาน cron
- การเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์บันทึกหรือการตั้งค่าเมลเซิร์ฟเวอร์เพื่อตรวจสอบงาน cron ได้อย่างมีประสิทธิภาพมากขึ้น
การเปรียบเทียบกับเครื่องมือที่คล้ายกัน
มีตัวกำหนดเวลางานอื่นๆ ที่คล้ายกับ cron เช่น anacron และ systemd timers ความแตกต่างหลักระหว่างสิ่งเหล่านี้สามารถสรุปได้ดังนี้:
เครื่องมือ | คำอธิบาย |
---|---|
ครอน | เหมาะสำหรับงานที่จะดำเนินการในช่วงเวลาที่กำหนดของวัน ไม่เรียกใช้งานที่พลาด |
อนาครอน | เหมาะสำหรับงานที่จะดำเนินการวันละครั้ง/สัปดาห์/เดือน จะรันงานที่พลาดเมื่อเครื่องกลับมาออนไลน์อีกครั้ง |
ระบบ | เหมาะสำหรับสถานการณ์ที่ซับซ้อนมากขึ้น เนื่องจากมีตัวเลือกมากกว่าและทำงานร่วมกับ Linux รุ่นใหม่ได้ดี |
มุมมองในอนาคตและเทคโนโลยีที่เกี่ยวข้อง
เนื่องจากระบบที่ใช้ Unix มีการพัฒนาอย่างต่อเนื่อง Cron ก็เช่นกัน แม้จะมีตัวกำหนดเวลางานขั้นสูงเช่น systemd ขึ้นมา แต่ความเรียบง่ายและประสิทธิภาพของ Cron ทำให้มั่นใจได้ว่าจะยังคงใช้อยู่ทั่วไปในปัจจุบัน
แนวโน้มล่าสุดเกี่ยวกับแอปพลิเคชันแบบคอนเทนเนอร์และสถาปัตยกรรมไมโครเซอร์วิสได้นำมาซึ่งวิธีใหม่ๆ ในการใช้ Cron ตัวอย่างเช่น Kubernetes ซึ่งเป็นแพลตฟอร์มการจัดการคอนเทนเนอร์ยอดนิยม มีฟีเจอร์ที่เรียกว่า CronJobs ซึ่งคล้ายกับ Cron ในระบบที่ใช้ Unix
พร็อกซีเซิร์ฟเวอร์และ Cron
สามารถใช้พร็อกซีเซิร์ฟเวอร์ร่วมกับ Cron เพื่อทำให้งานบางอย่างเป็นแบบอัตโนมัติได้อย่างมีประสิทธิภาพ ตัวอย่างเช่น หากคุณมีสคริปต์ที่ต้องเข้าถึงเว็บไซต์หรือ API เป็นประจำผ่านพร็อกซีเซิร์ฟเวอร์ คุณสามารถตั้งค่างาน cron เพื่อเรียกใช้สคริปต์นั้นตามช่วงเวลาที่กำหนดได้
Cron ยังสามารถใช้เพื่อหมุนพร็อกซีตามช่วงเวลาที่กำหนด ซึ่งช่วยลดโอกาสที่พร็อกซีตัวใดตัวหนึ่งจะถูกบล็อก ตัวอย่างเช่น บริการพร็อกซีของ OneProxy สามารถทำงานอัตโนมัติด้วย Cron สำหรับงานต่างๆ เช่น การขูดข้อมูล การทำงานโซเชียลมีเดียอัตโนมัติ และอื่นๆ
ลิงก์ที่เกี่ยวข้อง
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Cron โปรดพิจารณาแหล่งข้อมูลต่อไปนี้: