⏱️
← กลับไปคู่มือ

วิธีตรวจสอบ Cron Expression: คำแนะนำทีละขั้นตอน

· แท็ก: cron-validation, cron-debugging, cron-syntax-check, schedule-validation, linux-crontab

วิธีตรวจสอบ Cron Expression

cron expression มีขนาดกะทัดรัดแต่ผิดพลาดได้ง่าย เครื่องหมายทับที่วางผิดตำแหน่งหรือค่าที่อยู่นอกช่วงอาจทำให้ job ทำงานผิดเวลา — หรือไม่ทำงานเลย การตรวจสอบ expression ก่อนนำไปใช้ประหยัดเวลาหลายชั่วโมงในการดีบักเมื่องานสำคัญล้มเหลวอย่างเงียบ ๆ

ข้อผิดพลาดทางไวยากรณ์ที่พบบ่อย

ค่าที่อยู่นอกช่วง

แต่ละฟิลด์ยอมรับช่วงที่เฉพาะเจาะจง ค่าที่อยู่นอกช่วงนี้ไม่ถูกต้อง

# Invalid: minute 60 is out of range (0-59)
60 * * * *

# Invalid: hour 24 is out of range (0-23)
0 24 * * *

ฟิลด์ที่ขาดหาย

cron expression ต้องการห้าฟิลด์พอดี สี่ฟิลด์ไม่ถูกต้อง หกฟิลด์ต้องการไวยากรณ์แบบขยาย

# Invalid: only 4 fields (missing day of week)
0 0 * *

# Invalid: 6-field syntax without proper daemon support
0 0 * * * * /command.sh

นับเสมอ: นาที, ชั่วโมง, วันของเดือน, เดือน, วันในสัปดาห์

ค่าขั้นตอนที่ไม่ถูกต้อง

# Invalid: cannot step by 0
*/0 * * * *

# Invalid: step exceeds field maximum
*/61 * * * *

ค่าขั้นตอนต้องเริ่มที่ 1 และไม่เกินค่าสูงสุดของฟิลด์

วิธีตรวจสอบ Cron Expression

ขั้นตอนที่ 1: แยกเป็นฟิลด์

แยกตามช่องว่างและตรวจสอบว่ามีห้าฟิลด์พอดี:

Expression: 30 6 * * 1-5
Fields:     minute=30, hour=6, day=*, month=*, weekday=1-5

ขั้นตอนที่ 2: ตรวจสอบแต่ละฟิลด์

| ฟิลด์ | ช่วงที่อนุญาต | ยอมรับอักขระพิเศษ | |-------|--------------|-----------------------| | นาที | 0-59 | * , - / | | ชั่วโมง | 0-23 | * , - / | | วันของเดือน | 1-31 | * , - / | | เดือน | 1-12 | * , - / | | วันในสัปดาห์ | 0-7 | * , - / |

ขั้นตอนที่ 3: ตรวจสอบความขัดแย้ง

บาง expression ถูกต้องทางไวยากรณ์แต่ไม่สมเหตุสมผลทางตรรกะ:

# Runs on the 15th OR every Sunday — an OR condition
0 0 15 * 0

วันของเดือนและวันในสัปดาห์รวมกันสร้างเงื่อนไข OR ใน cron มาตรฐาน job จะทำงานเมื่อตรงกับอย่างใดอย่างหนึ่ง

ขั้นตอนที่ 4: ดูล่วงหน้าเวลาที่กำลังจะมาถึง

สร้างเวลาทำงานเพื่อตรวจสอบตารางของคุณด้วยภาพ:

Expression: 0 2 * * 1
Next 5 executions:
  1. 2026-07-27 02:00:00 (Monday)
  2. 2026-08-03 02:00:00 (Monday)
  3. 2026-08-10 02:00:00 (Monday)

หากการดูล่วงหน้าไม่ตรงกับความตั้งใจของคุณ แก้ไข expression ก่อนนำไปใช้ในการผลิต

การดีบัก Job ที่ไม่ทำงาน

expression ที่ถูกต้องแต่ไม่ทำงานมักเป็นปัญหาของระบบ:

  • สิทธิ์ — สคริปต์ต้องมีสิทธิ์ execute (chmod +x)
  • พาธ — cron ใช้ PATH แบบจำกัด ใช้พาธแบบสัมบูรณ์เสมอ: /usr/local/bin/mybackup.sh ไม่ใช่ mybackup.sh
  • สภาพแวดล้อม — cron ไม่โหลดโปรไฟล์ของเชลล์ ส่งออกตัวแปรภายใน crontab หรือสคริปต์เอง
  • การบันทึก — เปลี่ยนทิศทางผลลัพธ์เพื่อยืนยันการทำงาน:
0 6 * * * /path/to/script.sh >> /var/log/cron.log 2>&1

การใช้เครื่องมือตรวจสอบ

เครื่องมือตรวจสอบ cron expression มีสามฟังก์ชัน:

  1. การตรวจสอบไวยากรณ์ — ผลตอบรับทันทีเกี่ยวกับค่าฟิลด์และการจัดรูปแบบ
  2. การดูล่วงหน้าตาราง — ดูเวลาทำงานที่กำลังจะมาถึงจากวันที่ปัจจุบัน
  3. ปฏิทินแบบภาพ — เวลาทำงานที่กำหนดแสดงบนปฏิทินรายเดือน

ไม่ควรนำ cron expression ไปใช้โดยไม่ได้ดูล่วงหน้าเวลาทำงานหลายครั้งถัดไป การตรวจสอบสามสิบวินาทีป้องกันความล้มเหลวในการจัดตารางที่เงียบ

วิธีตรวจสอบ Cron Expression: คำแนะนำทีละขั้นตอน - CoolTool