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

ไวยากรณ์ Cron Expression: คู่มือฉบับสมบูรณ์พร้อมตัวอย่าง

· แท็ก: cron-syntax, crontab-format, cron-fields, cron-expression-guide, linux-automation

ไวยากรณ์ Cron Expression

Cron เป็นตัวจัดตารางงานมาตรฐานบนระบบแบบ Unix ทุก cron expression กำหนดตารางในสตริงที่กะทัดรัดซึ่งระบุว่าคำสั่งควรทำงานเมื่อใด การเข้าใจไวยากรณ์เป็นสิ่งจำเป็นสำหรับการทำให้การสำรองข้อมูล, การหมุนบันทึก และงานบำรุงรักษาเป็นอัตโนมัติ

รูปแบบ 5 ฟิลด์

cron expression มาตรฐานมีห้าฟิลด์ที่คั่นด้วยช่องว่าง:

* * * * *
| | | | |
| | | | +----- วันในสัปดาห์ (0-7, 0 และ 7 = วันอาทิตย์)
| | | +------- เดือน (1-12)
| | +--------- วันของเดือน (1-31)
| +----------- ชั่วโมง (0-23)
+------------- นาที (0-59)

รายละเอียดฟิลด์

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

นาทีควบคุมนาทีที่แน่นอนของการทำงาน: 30 * * * * ทำงานที่นาที 30 ของทุกชั่วโมง ชั่วโมงกำหนดเวลาของวัน: 0 6 * * * ทำงานที่ 6:00 น. ทุกวัน วันของเดือนจำกัดเฉพาะวันที่ในปฏิทิน: 0 0 15 * * ทำงานในวันที่ 15 ของทุกเดือนตอนเที่ยงคืน เดือนจำกัดการทำงานเฉพาะเดือน: 0 0 1 6 * ทำงานในวันที่ 1 มิถุนายน วันในสัปดาห์ควบคุมวันไหนในสัปดาห์: 0 8 * * 1-5 ทำงานที่ 8 โมงเช้า วันจันทร์ถึงวันศุกร์

สำคัญ: วันที่ 29-31 ทำงานเฉพาะในเดือนที่มีวันเหล่านั้น ในเดือนที่สั้นกว่า ค่าเหล่านั้นจะถูกข้ามอย่างเงียบ ๆ

อักขระพิเศษ

| อักขระ | ชื่อ | วัตถุประสงค์ | ตัวอย่าง | |------|------|---------|---------| | * | ดอกจัน | ค่าที่เป็นไปได้ทั้งหมด | * ในนาที = ทุกนาที | | , | จุลภาค | ค่าแบบรายการ | 1,15,30 = นาที 1, 15, 30 | | - | ยัติภังค์ | ช่วง | 9-17 = ชั่วโมง 9 ถึง 17 | | / | ทับ | ค่าขั้นตอน | */5 = ทุก 5 นาที |

ค่าขั้นตอนด้วยเครื่องหมายทับ

เครื่องหมายทับแสดง "ทุก N หน่วย":

# ทุก 5 นาที
*/5 * * * *

# ทุก 2 ชั่วโมง
0 */2 * * *

# ทุก 15 นาทีในช่วงเวลาทำการ
*/15 9-17 * * *

รูปแบบตาราง Cron ที่พบบ่อย

| ตาราง | Expression | คำอธิบาย | |----------|------------|-------------| | ทุกนาที | * * * * * | รัน 1,440 ครั้งต่อวัน | | ทุก 5 นาที | */5 * * * * | การตรวจสอบสุขภาพ, การเฝ้าติดตาม | | ทุกชั่วโมง | 0 * * * * | ต้นชั่วโมงทุกชั่วโมง | | วันละสองครั้ง | 0 6,18 * * * | 6 โมงเช้าและ 6 โมงเย็น | | ทุกวันตอนเที่ยงคืน | 0 0 * * * | การบำรุงรักษาแบบคลาสสิก | | รายสัปดาห์วันอาทิตย์ | 0 0 * * 0 | การบำรุงรักษารายสัปดาห์ | | วันที่ 1 ของเดือน | 0 0 1 * * | รายงานรายเดือน | | วันทำงาน 9 โมงเช้า | 0 9 * * 1-5 | เริ่มเวลาทำการ |

ทางลัดที่ไม่ได้มาตรฐาน

การใช้งาน cron บางระบบรองรับทางลัดแบบมีชื่อ: @yearly (1 ม.ค.), @monthly (วันที่ 1 ของเดือน), @weekly (วันอาทิตย์), @daily (เที่ยงคืน), @hourly และ @reboot (รันหนึ่งครั้งเมื่อระบบเริ่มต้น) รองรับโดย Vixie cron, cronie และ systemd timers

ข้อผิดพลาดที่พบบ่อย

  • การตั้งทั้งวันของเดือนและวันในสัปดาห์สร้างเงื่อนไข OR — job ทำงานเมื่อตรงกับอย่างใดอย่างหนึ่ง ซึ่งแทบไม่ใช่ความตั้งใจ
  • Cron ใช้เขตเวลาของระบบ งานใกล้การเปลี่ยนเวลาออมแสงอาจทำงานสองครั้งหรือไม่ทำงานเลย
  • นับห้าฟิลด์เสมอ สี่ฟิลด์ไม่ถูกต้อง หกฟิลด์ต้องการไวยากรณ์ cron แบบขยาย

ทดสอบ Cron Expression ของคุณ

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

ไวยากรณ์ Cron Expression: คู่มือฉบับสมบูรณ์พร้อมตัวอย่าง - CoolTool