วิธีสร้างนิพจน์ cron
นิพจน์ cron เป็นวิธีมาตรฐานในการกำหนดตารางเวลาที่ทำซ้ำได้บน Linux แพลตฟอร์มคลาวด์ ไปป์ไลน์ CI/CD และตัวกำหนดเวลางาน ไวยากรณ์กะทัดรัดแต่ไม่ตรงตัวมากนัก — เครื่องมือสร้างแบบภาพแสดงให้เห็นว่างานของคุณจะทำงานเมื่อใด
ไวยากรณ์ cron
นิพจน์ cron มี 5 ฟิลด์:
┌───────────── นาที (0-59)
│ ┌───────────── ชั่วโมง (0-23)
│ │ ┌───────────── วันของเดือน (1-31)
│ │ │ ┌───────────── เดือน (1-12)
│ │ │ │ ┌───────────── วันของสัปดาห์ (0-6, อาทิตย์=0)
│ │ │ │ │
* * * * *
ตารางเวลา cron ที่พบบ่อย
| ตารางเวลา | นิพจน์ | ความหมาย |
|---|---|---|
| ทุกนาที | * * * * * |
ทำงานทุก 60 วินาที |
| ทุก 5 นาที | */5 * * * * |
ที่ :00, :05, :10, :15... |
| ทุกชั่วโมง | 0 * * * * |
ที่ต้นชั่วโมงทุกชั่วโมง |
| ทุกวันเที่ยงคืน | 0 0 * * * |
ครั้งเดียวต่อวันเวลา 00:00 |
| ทุกวันเวลา 9 โมงเช้า | 0 9 * * * |
ครั้งเดียวต่อวันเวลา 09:00 |
| ทุกวันจันทร์ 8 โมงเช้า | 0 8 * * 1 |
รายสัปดาห์วันจันทร์ |
| วันที่ 1 ของทุกเดือน | 0 0 1 * * |
รายเดือนเที่ยงคืนวันที่ 1 |
| วันทำการเวลา 18:00 | 0 18 * * 1-5 |
วันจันทร์ถึงวันศุกร์ |
วิธีสร้างนิพจน์ cron
- กำหนดตารางเวลาของคุณ — ใช้การควบคุมแบบภาพเพื่อเลือกค่าของนาที ชั่วโมง วัน เดือน และวันของสัปดาห์ หรือเริ่มจากพรีเซ็ตเช่น « ทุกชั่วโมง » หรือ « ทุกวันเที่ยงคืน »
- ดูตัวอย่างการดำเนินการ — ตัวสร้างแสดงการดำเนินการ 5 ครั้งถัดไปเพื่อตรวจสอบว่าตารางเวลาถูกต้อง
- คัดลอกนิพจน์ — วางลงใน crontab ของคุณ การกำหนดค่า CI/CD หรือตัวกำหนดเวลาคลาวด์
อักขระพิเศษ
| อักขระ | ความหมาย | ตัวอย่าง |
|---|---|---|
* |
ทุกค่า | * * * * * = ทุกนาที |
*/n |
ทุกๆ n | */15 * * * * = ทุก 15 นาที |
, |
หลายค่า | 0 8,12,18 * * * = 8 น. เที่ยง 18 น. |
- |
ช่วง | 0 9-17 * * * = ทุกชั่วโมงตั้งแต่ 9 ถึง 17 น. |
เคล็ดลับ
- ตรวจสอบการดำเนินการครั้งถัดไปเสมอ — นิพจน์ cron พลาดได้ง่าย การแสดงตัวอย่างจะแสดงให้เห็นว่างานจะทำงานเมื่อใด ตรวจสอบก่อนปรับใช้
- เริ่มจากพรีเซ็ต — เริ่มต้นด้วยตารางเวลาทั่วไปเช่น « รายวัน » หรือ « รายชั่วโมง » และปรับแต่ง แทนที่จะเขียนตั้งแต่ต้น
- ระวังเขตเวลา — เวลา cron อยู่ในเขตเวลาของระบบ (โดยทั่วไปคือ UTC บนเซิร์ฟเวอร์) หากคุณต้องการเวลา 9 โมงเช้าที่ปารีส นั่นคือ
0 7 * * *ใน UTC ในช่วงเวลาออมแสง - ทดสอบด้วยช่วงเวลาสั้น — เมื่อตั้งค่า cron ใหม่ ทดสอบด้วย
*/5 * * * *(ทุก 5 นาที) เพื่อยืนยันว่าทำงานได้ จากนั้นเปลี่ยนเป็นตารางเวลาสุดท้าย
คำถามที่พบบ่อย
รูปแบบของนิพจน์ cron คืออะไร?
นิพจน์ cron มาตรฐานมี 5 ฟิลด์ที่คั่นด้วยช่องว่าง แสดงนาที (0-59) ชั่วโมง (0-23) วันของเดือน (1-31) เดือน (1-12) และวันของสัปดาห์ (0-6 โดย 0 คือวันอาทิตย์) เครื่องหมายดอกจัน (*) หมายถึง « ทุก » ค่าสำหรับฟิลด์นั้น
*/5 หมายความว่าอย่างไรใน cron?
ไวยากรณ์ */5 หมายถึง « ทุกๆ 5 » ในฟิลด์นาที */5 หมายถึงทุก 5 นาที (0, 5, 10, 15...) ในฟิลด์ชั่วโมง */5 หมายถึงทุก 5 ชั่วโมง ทำงานในฟิลด์ใดก็ได้
นิพจน์ cron เหมือนกันในทุกแพลตฟอร์มหรือไม่?
รูปแบบ 5 ฟิลด์เป็นมาตรฐานบน Linux cron, AWS EventBridge, GitHub Actions และระบบกำหนดเวลาส่วนใหญ่ บางแพลตฟอร์มเพิ่มฟิลด์ที่ 6 สำหรับวินาทีหรือปี ตรวจสอบเอกสารของแพลตฟอร์มของคุณ
ฉันจะกำหนดเวลาสำหรับวันสุดท้ายของเดือนได้อย่างไร?
cron มาตรฐานไม่มีคีย์เวิร์ด « วันสุดท้าย » ใช้วิธีอ้อมเช่นการดำเนินการรายวันพร้อมการตรวจสอบวันที่ในสคริปต์ของคุณ หรือใช้ส่วนขยายเฉพาะแพลตฟอร์ม (AWS EventBridge รองรับ L สำหรับ « last »)