Cron expression เป็นวิธีที่กระชับในการอธิบายตารางเวลาที่งานจะทำงานซ้ำ ๆ ใช้ในระบบคล้าย Unix มาตั้งแต่ทศวรรษ 1970 ห้าฟิลด์ที่คั่นด้วยช่องว่างสามารถแสดงตารางเวลาปกติได้แทบทุกแบบ
ห้าฟิลด์ของ expression
cron expression มาตรฐานมีรูปแบบ นาที ชั่วโมง วันของเดือน เดือน วันของสัปดาห์ ตัวอย่างเช่น 30 14 * * 1 หมายถึง "เวลา 14:30 ทุกวันจันทร์" — เครื่องหมายดอกจันหมายถึง "ค่าใดก็ได้" สำหรับวันของเดือนและเดือน
ความหมายของเครื่องหมายทับและจุลภาค
เครื่องหมายทับหลังดอกจัน อย่างใน */15 * * * * หมายถึง "ทุก 15 หน่วย" — ในกรณีนี้คือทุก 15 นาที จุลภาคช่วยให้ระบุค่าเฉพาะได้หลายค่า เช่น 0 9,18 * * * รันงานวันละสองครั้ง: เวลา 9:00 และ 18:00
เหตุใดฟิลด์ "วันของสัปดาห์" จึงสร้างความสับสนมากที่สุด
ใน cron มาตรฐาน ทั้งฟิลด์ "วันของเดือน" และ "วันของสัปดาห์" สามารถกำหนดเป็นค่าอื่นที่ไม่ใช่ดอกจันพร้อมกันได้ — ในกรณีนี้ งานจะรันหากเงื่อนไขใดเงื่อนไขหนึ่งจากสองเงื่อนไขตรงกัน (OR เชิงตรรกะ ไม่ใช่ AND) ซึ่งขัดกับสัญชาตญาณของคนส่วนใหญ่
ไวยากรณ์เดียวกันที่ยังอยู่ในโฮสติ้งราคาประหยัดของไทย
เว็บโฮสติ้งราคาประหยัดที่ธุรกิจ SME ไทยจำนวนมากใช้งานสำหรับเว็บไซต์ WordPress หรือระบบหลังบ้าน PHP มักมีเมนู cron job ใน cPanel ให้ตั้งงานอัตโนมัติ เช่น สำรองฐานข้อมูลหรือส่งอีเมลสรุปยอดขายรายวัน — เบื้องหลังเมนูกราฟิกเหล่านี้คือไวยากรณ์ห้าฟิลด์แบบเดียวกับที่มีมาตั้งแต่ยุค Unix ทศวรรษ 1970 ทุกประการ
ทำไมต้องใช้สิ่งนี้
- ถอดรหัส cron expression ของคนอื่นในการตั้งค่าเซิร์ฟเวอร์หรือ pipeline CI/CD
- ตรวจสอบว่าตารางเวลาที่เขียนถูกต้องก่อนนำไป deploy ใน production
- วางแผนเวลาที่แน่นอนสำหรับการรันงานครั้งถัดไปหลาย ๆ ครั้ง
เวลาออมแสง/เวลามาตรฐาน กับ cron
หากตัวจัดตารางทำงานในเขตเวลาที่มีการเปลี่ยนเวลาออมแสง งานที่ตั้งเวลาไว้ในชั่วโมงที่ไม่มีอยู่จริง (เช่น 2:30 น. ในคืนที่ปรับนาฬิกาเดินหน้า) อาจไม่ทำงานในวันนั้น และงานที่ตั้งเวลาไว้ในชั่วโมงที่เกิดซ้ำเมื่อปรับนาฬิกาถอยหลังอาจทำงานสองครั้ง ประเทศไทยไม่เคยใช้เวลาออมแสงจึงไม่พบปัญหานี้ในประเทศ แต่ยังต้องระวังเมื่อเชื่อมต่อกับเซิร์ฟเวอร์ต่างประเทศ ด้วยเหตุนี้ งานที่สำคัญมักเลือกเวลานอกช่วงการเปลี่ยนแปลงทั่วไป (เช่น เที่ยงคืนหรือตี 3-4) หรือใช้เขตเวลา UTC อย่างชัดเจน