ทำอะไรได้
ตัวแปลความหมายนิพจน์ Cron อธิบายตารางเวลาของ Cron เป็นภาษาที่อ่านเข้าใจง่าย และแสดงเวลาที่จะรันครั้งถัดไป ไวยากรณ์ของ Cron กระชับแต่พลาดได้ง่าย: 0 9 * * 1-5 คือเก้าโมงเช้าวันทำงาน หรือทุกนาทีในช่วงเก้าโมง? วางนิพจน์ที่นี่ก่อน deploy เพื่อตรวจว่ามันทำงานเมื่อไรแน่
แต่ละฟิลด์จากทั้งห้าฟิลด์ยังถูกแจกแจงเป็นค่าที่อนุญาตจริง ทำให้เห็นข้อผิดพลาดในช่วงค่าและขั้น (step) ได้ง่าย
วิธีใช้งาน
- พิมพ์นิพจน์ Cron ลงในช่องอินพุต หรือคลิก ตัวอย่าง
- อ่านคำอธิบายและตารางฟิลด์ ข้อผิดพลาดจะชี้ไปที่ฟิลด์และคอลัมน์ที่ผิด เช่น ชั่วโมงเป็น 24
- เลือก เวลาท้องถิ่น หรือ UTC สำหรับรอบการรันที่จะมาถึง และจำนวนรอบที่ต้องการแสดง
ไวยากรณ์ Cron
นิพจน์ Cron มีห้าฟิลด์คั่นด้วยช่องว่าง:
┌───────────── minute (0–59)
│ ┌─────────── hour (0–23)
│ │ ┌───────── day of month (1–31)
│ │ │ ┌─────── month (1–12 or JAN–DEC)
│ │ │ │ ┌───── day of week (0–7 or SUN–SAT, 0 and 7 are Sunday)
│ │ │ │ │
* * * * *
| สัญลักษณ์ | ความหมาย | ตัวอย่าง |
|---|---|---|
* | ทุกค่า | * ในฟิลด์ชั่วโมง = ทุกชั่วโมง |
, | รายการ | 1,15 = วันที่ 1 และ 15 |
- | ช่วง | MON-FRI = วันจันทร์ถึงวันศุกร์ |
/ | ขั้น | */15 = ทุก 15 นาที |
รองรับคำย่อด้วย: @hourly, @daily (หรือ @midnight), @weekly, @monthly และ @yearly (หรือ @annually)
ตัวอย่าง
| นิพจน์ | รันเมื่อ |
|---|---|
*/5 * * * * | ทุก 5 นาที |
0 * * * * | ต้นชั่วโมงทุกชั่วโมง |
0 9 * * 1-5 | เวลา 09:00 ในวันทำงาน |
30 2 1 * * | เวลา 02:30 ของวันแรกของทุกเดือน |
0 0 * * 0 | เที่ยงคืนทุกวันอาทิตย์ |
คำถามที่พบบ่อย
› เครื่องมือนี้ใช้รูปแบบ Cron แบบไหน?
ใช้รูปแบบ Unix (Vixie) cron มาตรฐานห้าฟิลด์ ที่ใช้ใน crontab, Kubernetes CronJob, GitHub Actions และตัวจัดตารางงานส่วนใหญ่ ไม่รองรับรูปแบบหกฟิลด์ที่มีวินาที (Quartz, Spring)
› ถ้ากำหนดทั้งวันที่ของเดือนและวันในสัปดาห์จะเกิดอะไรขึ้น?
Cron มาตรฐานจะรันงานเมื่อฟิลด์ใดฟิลด์หนึ่งตรง เช่น 0 0 1,15 * 5 จะรันในวันที่ 1 และ 15 ของทุกเดือน และทุกวันศุกร์
› ทำไมเวลารันบนเซิร์ฟเวอร์ของฉันถึงต่างออกไป?
Cron ใช้เขตเวลาของเครื่องหรือบริการที่รันมัน GitHub Actions และตัวจัดตารางงานบนคลาวด์ส่วนใหญ่ใช้ UTC ให้สลับเขตเวลาเป็น UTC เพื่อดูว่าจะรันเมื่อไร
› ใช้ชื่ออย่าง MON หรือ JAN ได้หรือไม่?
ได้ ฟิลด์เดือนรับ JAN–DEC และฟิลด์วันในสัปดาห์รับ SUN–SAT ไม่สนตัวพิมพ์เล็กหรือใหญ่ วันอาทิตย์เขียนเป็น 0 หรือ 7 ก็ได้