onlinetools.dev

ตัวแปลนิพจน์ Cron

อธิบายตารางเวลา cron ใด ๆ เป็นภาษาคน พร้อมรอบทำงานถัดไป

ทำงานในเครื่อง
loading…
เกี่ยวกับเครื่องมือนี้

วางนิพจน์ cron ห้าฟิลด์แล้วรับคำอธิบายเป็นภาษาคน พร้อมการแยกทีละฟิลด์ และ — ส่วนที่จับความผิดพลาดจริงได้ — เวลาทำงานจริงห้าครั้งถัดไปซึ่งคำนวณในเขตเวลาท้องถิ่นของคุณ “0 3 * * 1” จะถูกอ่านกลับมาว่า “เวลา 03:00 น. ทุกวันจันทร์” ตามด้วยวันที่จริงที่มันจะทำงาน

ตัวแยกวิเคราะห์รองรับไวยากรณ์มาตรฐานเต็มรูปแบบ: รายการ (1,15) ช่วง (9-17) ขั้น (*/15) ชื่อเดือนและชื่อวัน (jan, mon) เลข 7 แทนวันอาทิตย์ และตระกูลมาโคร @daily/@hourly อีกทั้งยังอิมพลีเมนต์กฎที่ทุกคนลืม: เมื่อทั้งวันของเดือนและวันของสัปดาห์ถูกกำหนดไว้ งานจะทำงานเมื่ออย่างใดอย่างหนึ่งตรง ไม่ใช่ต้องตรงทั้งคู่

นิพจน์หกฟิลด์ (แบบ Quartz ที่มีวินาที) จะถูกตรวจพบและระบุอย่างชัดเจน แทนที่จะถูกแยกวิเคราะห์ผิดเงียบ ๆ — ซึ่งเป็นต้นเหตุที่พบบ่อยที่สุดของความสับสน “cron ของฉันผิด” เวลาย้ายไปมาระหว่างตัวจัดเวลาของ Java กับ crontab ของยูนิกซ์

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

ห้าฟิลด์เรียงตามลำดับอย่างไร?
นาที (0–59), ชั่วโมง (0–23), วันของเดือน (1–31), เดือน (1–12), วันของสัปดาห์ (0–6 โดยวันอาทิตย์ = 0 และรับ 7 เป็นวันอาทิตย์ได้ด้วย) การจำลำดับคือการต่อสู้ชั่วนิรันดร์ — แผงแยกฟิลด์จะติดป้ายกำกับทุกฟิลด์ในนิพจน์ของคุณ
ทำไม “0 0 1 * 1” จึงทำงานบ่อยกว่าที่ฉันคาด?
เพราะทั้งวันของเดือน (วันที่ 1) และวันของสัปดาห์ (วันจันทร์) ถูกกำหนดไว้ cron จึงรันงานเมื่อ “อย่างใดอย่างหนึ่ง” ตรง — ทุกวันที่ 1 ของเดือน และทุกวันจันทร์ หากต้องการ “วันที่ 1 เฉพาะเมื่อเป็นวันจันทร์” คุณต้องตรวจวันที่ในสคริปต์เอง
เวลาทำงานครั้งถัดไปใช้เขตเวลาใด?
เขตเวลาท้องถิ่นของเบราว์เซอร์คุณ ซึ่งแสดงไว้ข้างผลลัพธ์ crontab จริงจะทำงานตามเขตเวลาของเซิร์ฟเวอร์ (หรือบรรทัด TZ= ใน cron บางตัว) — ควรยืนยันเสมอว่าเครื่องปลายทางใช้เขตเวลาใด โดยเฉพาะช่วงเปลี่ยนเวลาออมแสง
รองรับวินาทีหรือปีไหม?
ไม่ — นั่นคือส่วนขยายของ Quartz (Java) ที่มี 6 หรือ 7 ฟิลด์ cron มาตรฐานของยูนิกซ์มีห้าฟิลด์พอดีและความละเอียดหนึ่งนาที ข้อมูลเข้าแบบหกฟิลด์จะถูกตรวจพบและรายงานว่าเป็น Quartz แทนที่จะถูกอ่านผิด
เครื่องมือที่เกี่ยวข้อง