เครื่องทดสอบ Cron Expression (ดูการทำงาน
พิมพ์ cron expression แบบ 5 ฟิลด์ (นาที ชั่วโมง วันที่ เดือน วันในสัปดาห์) และดูเวลาทำงาน 5 ครั้งถัดไป มีพรีเซ็ตทั่วไปรวมอยู่ด้วย
- 1.วันอังคารที่ 19 พฤษภาคม พ.ศ. 2569 เวลา 09:00
- 2.วันพุธที่ 20 พฤษภาคม พ.ศ. 2569 เวลา 09:00
- 3.วันพฤหัสบดีที่ 21 พฤษภาคม พ.ศ. 2569 เวลา 09:00
- 4.วันศุกร์ที่ 22 พฤษภาคม พ.ศ. 2569 เวลา 09:00
- 5.วันจันทร์ที่ 25 พฤษภาคม พ.ศ. 2569 เวลา 09:00
วิธีการทำงาน
ไวยากรณ์ Cron ในห้าฟิลด์
cron มาตรฐานมี 5 ฟิลด์คั่นด้วยช่องว่าง: นาที (0-59), ชั่วโมง (0-23), วันที่ (1-31), เดือน (1-12), วันในสัปดาห์ (0-6, 0=อาทิตย์) แต่ละฟิลด์รับ: ค่าเดียว (5), range (1-5), list (1,3,5), step (*/15 หมายถึงทุก 15), หรือ wildcard (*) การรวมใช้งานได้: 1-5,10/2 หมายถึง 1-5 แล้วทุก 2 ตั้งแต่ 10
เครื่องทดสอบนี้ใช้ dialect POSIX/Linux crontab ที่เข้มงวด ระบบบางอย่างขยาย cron ด้วยชื่อเดือน (JAN-DEC) หรือวันในสัปดาห์ (SUN-SAT) ไม่รองรับที่นี่ ใช้ค่าตัวเลขเพื่อความเข้ากันได้สูงสุด
รูปแบบทั่วไป
*/5 * * * * — ทุก 5 นาที เหมาะสำหรับการรีเฟรช cache และการ poll ระยะสั้น
0 9 * * 1-5 — 9 โมงเช้าทุกวันทำงาน รายงานเวลาทำการ
0 0 1 * * — เที่ยงคืนวันที่ 1 ของทุกเดือน การเรียกเก็บหรือสรุปสถิติรายเดือน
0 */6 * * * — ทุก 6 ชั่วโมง (00:00, 06:00, 12:00, 18:00) การ poll ระยะยาว
0 0 * * 0 — เที่ยงคืนทุกวันอาทิตย์ รายงานรายสัปดาห์
*/15 9-17 * * 1-5 — ทุก 15 นาทีในเวลาทำการ วันทำงาน การ poll เวลาใช้งานสูง
วันที่ vs วันในสัปดาห์
ทั้งสองฟิลด์รับค่าได้ แต่ระวัง: ใน dialect มาตรฐาน เมื่อทั้งสองฟิลด์ถูกตั้ง (ไม่ใช่ '*') cron จะทำงานเมื่อเงื่อนไขใดเงื่อนไขหนึ่งตรง ไม่ใช่ทั้งสอง ดังนั้น `0 0 1 * MON` (วันที่ 1 ของเดือน หรือวันจันทร์) จะทำงานบ่อยกว่าที่คิด
เพื่อจำกัดให้เป็น 'วันจันทร์แรกของเดือน' cron เพียงอย่างเดียวทำไม่ได้โดยตรง ต้องรันสคริปต์รายวันและตรวจสอบ day-of-month <= 7 ข้างใน หรือใช้ scheduler (Airflow, GitHub Actions schedule + check) ที่รองรับการกำหนดการที่ครอบคลุมมากขึ้น
คำถามที่พบบ่อย
›ทำไมถึงเห็น 5 ครั้งในโซนเวลาท้องถิ่น?
Cron อยู่ในโซนเวลาท้องถิ่นของ host เสมอ โซนเวลาของเบราว์เซอร์คือสิ่งที่แสดงที่นี่ Cron daemon จริงใช้ TZ ของเซิร์ฟเวอร์ ตรวจสอบ host ของคุณ
›สามารถใช้ชื่อเดือน/วันในสัปดาห์ได้หรือไม่?
ยังไม่ได้ รองรับเฉพาะค่าตัวเลข อาจเพิ่ม alias แบบ JAN/MON ในภายหลัง
›ความแตกต่างระหว่าง * และ ? คืออะไร?
ใน cron มาตรฐานเหมือนกัน Quartz dialect บางอย่างใช้ ? เพื่อแยกแยะ 'ไม่ระบุ' สำหรับฟิลด์วันที่ vs วันในสัปดาห์ cron มาตรฐานถือว่าเหมือนกัน
›ทำไมวันที่ + วันในสัปดาห์จึงไม่ทำงานตามที่คาดหวัง?
เมื่อทั้งสองฟิลด์ไม่ใช่ '*' cron มาตรฐานใช้ OR (ตรงทั้งสอง) เพื่อรับ AND ('วันจันทร์แรกของเดือน') คุณต้องมี wrapper script หรือ scheduler ที่มีการแสดงออกมากขึ้น
›รองรับวินาทีหรือไม่?
cron มาตรฐานมีความแม่นยำระดับนาที ระบบบางอย่างเพิ่มฟิลด์ที่หกสำหรับวินาที เราไม่รองรับ ถ้าต้องการความแม่นยำระดับวินาที ใช้ setInterval หรือ scheduler อื่น
›ขีดจำกัดรายละเอียดคืออะไร?
ระดับนาที กำหนดการที่ละเอียดกว่า 1 นาทีไม่สามารถแสดงใน cron
›สามารถทดสอบ cron expression สำหรับปีที่ผ่านมาได้หรือไม่?
เราคำนวณไปข้างหน้าจาก 'ตอนนี้' สำหรับการวิเคราะห์ประวัติศาสตร์ ใช้ไลบรารี cron ของภาษาโปรแกรม
›ข้อมูลออกไปจากเบราว์เซอร์หรือไม่?
ไม่ การ parse และการคำนวณทั้งหมดเป็นการทำงานในเครื่อง
เครื่องมือที่เกี่ยวข้อง
อัปเดตล่าสุด: