นักพัฒนา

ตัวแปล Cron Expression

วาง cron expression แบบ 5 ฟิลด์ใดก็ได้ แล้วดูความหมายเป็นภาษาที่เข้าใจง่ายได้ทันที — ไม่ต้องเพ่งดูเครื่องหมายดอกจันและเครื่องหมายทับเพื่อหาว่างานจะรันเมื่อไรอีกต่อไป

เครื่องมือนี้ช่วยคุณได้ไหม?

ตัวแปล Cron Expression คืออะไร?

Cron เป็นไวยากรณ์การกำหนดเวลามาตรฐานที่ใช้ในงาน cron ของ Unix/Linux, ไปป์ไลน์ CI/CD, Kubernetes CronJobs และตัวกำหนดเวลาอีกนับไม่ถ้วน นิพจน์ cron บรรจุตารางงานซ้ำทั้งหมดลงใน 5 ฟิลด์ขนาดกะทัดรัด ซึ่งมีประสิทธิภาพแต่ขึ้นชื่อว่ายากต่อการเข้าใจในทันที — "0 */4 * * 1-5" หมายถึงทุก 4 ชั่วโมงในวันทำงาน หรือมีความหมายอื่น? ตัวแปลนี้จะแยกนิพจน์ cron ฟิลด์ต่อฟิลด์และแปลเป็นประโยคภาษาที่เข้าใจง่าย เพื่อให้คุณตรวจสอบว่าตารางถูกต้องก่อนนำไปใช้งาน หรือเข้าใจตารางที่คนอื่นเขียนได้อย่างรวดเร็วโดยไม่ต้องเปิดตารางอ้างอิงไวยากรณ์ cron

เมื่อไหร่ควรใช้เครื่องคำนวณนี้

  • เมื่อคุณตรวจสอบตารางเวลา cron ก่อนนำงานที่ตั้งเวลาไว้หรือไปป์ไลน์ CI/CD ไปใช้งานจริง
  • เมื่อคุณดีบักว่าทำไมงานที่ตั้งเวลาไว้ถึงรัน (หรือไม่รัน) ในเวลาที่ไม่คาดคิด
  • เมื่อคุณตรวจสอบ Kubernetes CronJob หรือตารางเวลา GitHub Actions ที่เขียนโดยเพื่อนร่วมทีม
  • เมื่อคุณเรียนรู้ไวยากรณ์ cron สำหรับหลักสูตรการบริหารระบบหรือ DevOps
  • เมื่อคุณตรวจสอบรายการ crontab ที่มีอยู่ระหว่างการย้ายเซิร์ฟเวอร์
  • เมื่อคุณออกแบบรูปแบบการตั้งเวลาที่ซับซ้อนซึ่งผสมผสานข้อจำกัดด้านเวลาหลายประการ

ขั้นตอน:

  1. วางหรือพิมพ์นิพจน์ cron แบบ 5 ฟิลด์ลงในช่องป้อนข้อมูล
  2. ดูแต่ละฟิลด์ที่แยกออกมาพร้อมความหมาย
  3. อ่านคำแปลตารางเวลาทั้งหมดเป็นภาษาที่เข้าใจง่าย
  4. ลองใช้ปุ่มรูปแบบสำเร็จรูปสำหรับตารางเวลาที่ใช้บ่อย เช่น "ทุกชั่วโมง" หรือ "วันธรรมดา 9 โมงเช้า"

สูตร

┌───────────── นาที (0-59) │ ┌───────────── ชั่วโมง (0-23) │ │ ┌───────────── วันของเดือน (1-31) │ │ │ ┌───────────── เดือน (1-12) │ │ │ │ ┌───────────── วันของสัปดาห์ (0-6, อาทิตย์=0) │ │ │ │ │ * * * * *

กรณีใช้งาน

  • ตรวจสอบตารางเวลา cron ก่อนนำงานที่ตั้งเวลาไว้หรือไปป์ไลน์ CI/CD ไปใช้งานจริง
  • ทำความเข้าใจ Kubernetes CronJob หรือฟังก์ชัน serverless ที่ตั้งเวลาไว้ซึ่งเขียนโดยเพื่อนร่วมทีม
  • แก้ไขปัญหาว่าทำไมงานที่ตั้งเวลาไว้ถึงรัน (หรือไม่รัน) ในเวลาที่ไม่คาดคิด
  • เรียนรู้ไวยากรณ์ cron สำหรับหลักสูตร sysadmin หรือ DevOps
  • ตรวจสอบรายการ crontab ที่มีอยู่ระหว่างการย้ายเซิร์ฟเวอร์

ประโยชน์หลัก

  • แปลไวยากรณ์ cron ที่เข้าใจยากเป็นภาษาที่เข้าใจง่ายได้ทันที
  • แยกแต่ละฟิลด์จากทั้งหมด 5 ฟิลด์ออกมาเพื่อความชัดเจน
  • รูปแบบสำเร็จรูปคลิกเดียวสำหรับรูปแบบการตั้งเวลาที่พบบ่อยที่สุด
  • ไม่ต้องสมัครสมาชิก ทำงานทั้งหมดในเบราว์เซอร์ของคุณ

เคล็ดลับ

  • หากไม่แน่ใจ ให้ทดสอบด้วยเวลาที่ใกล้ในอนาคตก่อนเพื่อยืนยันว่าตารางเวลาทำงานตามที่คาดไว้
  • ใช้ช่วง (1-5) แทนการระบุทุกค่าด้วยเครื่องหมายจุลภาคเมื่อทำได้ เพื่อให้อ่านง่ายขึ้น
  • ตรวจสอบการตั้งค่าเขตเวลาของเซิร์ฟเวอร์หรือตัวตั้งเวลาของคุณอีกครั้ง — นี่คือสาเหตุที่พบบ่อยที่สุดของบั๊ก "เวลาไม่ถูกต้อง" ใน cron
  • สำหรับตารางเวลาที่ซับซ้อนกว่าตารางรายวัน/รายสัปดาห์ธรรมดา ให้เขียนคำอธิบายเป็นภาษาที่เข้าใจง่ายและเทียบกับความตั้งใจของคุณก่อนนำไปใช้งานจริง

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

  • ลืมว่าวันของเดือนและวันของสัปดาห์ถูกรวมกันด้วย OR ไม่ใช่ AND
  • สับสนระหว่างวันของสัปดาห์ที่เริ่มนับจาก 0 (0=อาทิตย์) กับข้อกำหนดที่เริ่มนับจาก 1 ของระบบอื่น
  • สันนิษฐานว่า */7 ในฟิลด์วันของเดือนหมายถึง "ทุก 7 วัน" — จริงๆ แล้วหมายถึงวันที่ 1, 8, 15, 22, 29 โดยเริ่มนับใหม่ทุกเดือน
  • ลืมว่าการใช้งาน cron ส่วนใหญ่รันตามเขตเวลาท้องถิ่นของเซิร์ฟเวอร์ ไม่ใช่ UTC หรือเขตเวลาของผู้ใช้

คำศัพท์สำคัญ

Cron: ตัวตั้งเวลางานตามเวลาที่ใช้ในระบบปฏิบัติการแบบ Unix
Crontab: ไฟล์หรือคำสั่งที่ใช้กำหนดรายการงาน cron
ค่าขั้น (Step value): ไวยากรณ์ "/N" หมายถึง "ทุก N หน่วย" เริ่มจากค่าต่ำสุดของฟิลด์
CronJob: ทรัพยากรของ Kubernetes สำหรับรันงานตามตารางเวลา cron

แนวคิดที่เกี่ยวข้อง

  • เครื่องคิดเลขผลต่างเวลา: คำนวณระยะเวลาทั้งสองวันที่และเวลา
  • เครื่องคิดเลขวันนับถอยหลัง: นับวันจนถึงวันที่กำหนด
  • ตัวแปลงเวลาระบบ Unix: แปลงระหว่างเวลา Unix timestamp และวันที่
  • เครื่องคิดเลขอาณาเขตเวลา: ค้นหาชั่วโมงทำงานที่ทับซ้อนระหว่างเขตเวลา
  • ตัวจัดรูปแบบ JSON: จัดรูปแบบและตรวจสอบข้อมูล JSON

ตัวอย่าง

นิพจน์ "0 9 * * 1-5" แยกได้เป็น: นาที=0, ชั่วโมง=9, ทุกวันของเดือน, ทุกเดือน, จันทร์ถึงศุกร์ — หมายความว่า "เวลา 09:00 น. ทุกวันจันทร์ถึงศุกร์"

การตีความผลลัพธ์

ตัวแยกวิเคราะห์จะแยกนิพจน์ cron 5 ฟิลด์ออกเป็นส่วนประกอบแต่ละส่วนและแปลเป็นภาษาที่เข้าใจง่าย ห้าฟิลด์คือ: นาที (0-59), ชั่วโมง (0-23), วันของเดือน (1-31), เดือน (1-12) และวันของสัปดาห์ (0-6 โดย 0 คือวันอาทิตย์) งานจะรันเมื่อทั้งห้าฟิลด์ตรงกับเวลาปัจจุบัน — นี่คือตรรกะ AND ระหว่างฟิลด์ สังเกตปฏิสัมพันธ์ระหว่างวันของเดือนกับวันของสัปดาห์ ซึ่งใช้ตรรกะ OR (ไม่ใช่ AND) งานที่ตั้งเวลาด้วยวันที่ 15 และวันของสัปดาห์ 5 จะรันในวันที่ 15 ของทุกเดือนและทุกวันศุกร์ — ไม่ใช่แค่วันศุกร์ที่ตรงกับวันที่ 15

คำถามที่พบบ่อย

5 ฟิลด์ในนิพจน์ cron มีอะไรบ้าง?
เรียงตามลำดับ: นาที (0-59), ชั่วโมง (0-23), วันของเดือน (1-31), เดือน (1-12) และวันของสัปดาห์ (0-6 โดย 0 คือวันอาทิตย์) งานจะรันเมื่อทั้งห้าฟิลด์ตรงกับเวลาปัจจุบัน
เครื่องหมายดอกจัน (*) ในไวยากรณ์ cron หมายถึงอะไร?
เครื่องหมายดอกจันหมายถึง "ค่าใดก็ได้" สำหรับฟิลด์นั้น ตัวอย่างเช่น * ในฟิลด์ชั่วโมงหมายถึงงานสามารถรันได้ทุกชั่วโมง ซึ่งหมายความว่าฟิลด์นั้นไม่จำกัดตารางเวลาเลย
*/5 หมายถึงอะไร?
เครื่องหมายทับหมายถึงค่าขั้น (step value) */5 ในฟิลด์นาทีหมายถึง "ทุก 5 นาที" — เริ่มจากค่าต่ำสุดของฟิลด์และวนซ้ำทุก 5 หน่วย
จะกำหนดให้งานรันเฉพาะวันธรรมดาได้อย่างไร?
ใช้ช่วงในฟิลด์วันของสัปดาห์: 1-5 หมายถึงจันทร์ถึงศุกร์ เมื่อรวมกับชั่วโมงและนาทีที่กำหนด เช่น "0 9 * * 1-5" จะรันเวลา 9 โมงเช้าทุกวันธรรมดา
จุลภาคในไวยากรณ์ cron หมายถึงอะไร?
จุลภาคใช้แยกค่าหลายค่าในฟิลด์เดียว ตัวอย่างเช่น 0,15,30,45 ในฟิลด์นาทีหมายความว่างานจะรันที่นาทีที่ 0, 15, 30 และ 45 จุลภาคคือ OR อย่างง่าย: งานจะรันที่ค่าใดก็ได้ในรายการ
ขีดกลาง (ช่วง) ในไวยากรณ์ cron หมายถึงอะไร?
ขีดกลางกำหนดช่วงของค่า ตัวอย่างเช่น 1-5 ในฟิลด์วันของสัปดาห์หมายถึงจันทร์ถึงศุกร์ (วันที่ 1 ถึง 5) ช่วงจะรวมทั้งสองปลาย คุณสามารถผสมช่วงกับไวยากรณ์อื่น: 1-5,0 หมายถึงจันทร์ถึงศุกร์รวมวันอาทิตย์
จะกำหนดให้งานรันทุก 2 สัปดาห์ได้อย่างไร?
cron มาตรฐานไม่รองรับการตั้งเวลาแบบสองสัปดาห์โดยเนื้อแท้ คุณมีสองตัวเลือก: (1) ใช้สคริปต์เสริมที่ตรวจสอบวันที่และรันเฉพาะทุกสองสัปดาห์ หรือ (2) ใช้ตัวตั้งเวลางานที่รองรับนิพจน์ที่ซับซ้อนกว่า เช่น AWS EventBridge หรือตั้งเวลาของระบบกับตัวกระตุ้นที่อิงตามปฏิทิน
cron ใช้เขตเวลาใด?
cron มาตรฐานใช้เขตเวลาท้องถิ่นของเซิร์ฟเวอร์ หากเซิร์ฟเวอร์ของคุณตั้งค่าเป็น UTC งาน cron ทั้งหมดจะรันใน UTC โดยไม่คำนึงถึงเขตเวลาท้องถิ่นของคุณ ตรวจสอบการตั้งค่าเขตเวลาของเซิร์ฟเวอร์เสมอ โดยเฉพาะในสภาพแวดล้อมคลาวด์
cron กับ crontab ต่างกันอย่างไร?
Cron คือ daemon (บริการเบื้องหลัง) ที่รันงานตามเวลา Crontab คือไฟล์กำหนดค่า (หรือคำสั่ง) ที่กำหนดรายการงาน cron เมื่อคุณแก้ไข crontab คุณจะเขียนนิยามตารางเวลาที่ daemon cron อ่านและดำเนินการ
จะจัดการกับเวลาออมแสงด้วย cron อย่างไร?
การใช้งาน cron ส่วนใหญ่ไม่ปรับตัวอัตโนมัติสำหรับเวลาออมแสง เมื่อนาฬิกาเดินหน้า งานที่ตั้งเวลาไว้ตอนตี 2 อาจถูกข้ามไปทั้งหมด เมื่อนาฬิกากลับหลัง งานอาจรันสองครั้ง หลีกเลี่ยงปัญหาโดยตั้งเวลางานนอกช่วงเปลี่ยนผ่าน (ตี 2 ถึงตี 3) หรือใช้การตั้งเวลาแบบ UTC
ใช้ cron กับช่วงเวลาน้อยกว่า 1 นาทีได้ไหม
cron มาตรฐานมีความแม่นยำระดับนาทีและไม่สามารถตั้งเวลาให้งานรันบ่อยกว่าครั้งเดียวต่อนาที สำหรับช่วงเวลาน้อยกว่านาที ใช้ทางเลือกเช่น timer ของ systemd, Kubernetes CronJobs ที่มีช่วงสั้นกว่า หรือตัวตั้งเวลาในระดับแอปพลิเคชัน (node-cron ที่รองรับมิลลิวินาที)

ค้นพบเครื่องมือเพิ่มเติม

คัดสรรใหม่จากคลังเครื่องมือทั้งหมดของเรา