ตัวแปลนิพจน์ Cron
อธิบายตารางเวลา cron ใด ๆ เป็นภาษาคน พร้อมรอบทำงานถัดไป
เกี่ยวกับเครื่องมือนี้
วางนิพจน์ 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 แทนที่จะถูกอ่านผิด