เครื่องมือแยกวิเคราะห์นิพจน์ Cron
ห้าฟิลด์คั่นด้วยช่องว่าง หรือคำย่อ เช่น @daily
คุณรับช่วงดูแล crontab ที่เต็มไปด้วยบรรทัดอย่าง 0 */2 * * 1-5 และ 30 3 * JAN,JUL 1 ต่อจากคนก่อนหน้า เครื่องมือนี้จะแจกแจงแต่ละฟิลด์ออกมาเป็นค่าที่ตรงกันจริง ๆ แทนที่จะต้องเดาว่า */2 ครอบคลุมอะไรบ้าง คุณจะเห็นครบทั้ง 12 ชั่วโมงที่มันเลือกไว้ พร้อมจำนวนค่ากำกับอยู่ข้าง ๆ นอกจากนี้ยังได้นิพจน์มาตรฐานแบบ 5 ฟิลด์ คำเตือนเมื่อนิพจน์เข้าข่ายกับดักที่พบบ่อย และเวลาทำงาน 5 ครั้งถัดไปที่คำนวณตามเขตเวลาของคุณเอง
วิธีแยกวิเคราะห์นิพจน์ cron
-
1
วางนิพจน์
บรรทัดแบบ 5 ฟิลด์ (`* * * * *`) ได้แก่ นาที, ชั่วโมง, วันที่ของเดือน, เดือน และวันในสัปดาห์ คำย่ออย่าง `@daily` ก็ใช้ได้เช่นกัน
-
2
อ่านค่าที่แต่ละฟิลด์แจกแจงออกมา
ทุกฟิลด์จะแสดงค่าที่ตรงกันพร้อมจำนวนค่ากำกับไว้ ดังนั้น `*/2` ในฟิลด์ชั่วโมงจึงแสดง 0, 2, 4 และอีก 9 ค่าที่เหลือซึ่งมันครอบคลุม
-
3
ตรวจสอบตัวอย่างรอบการทำงานถัดไป
เวลาทำงาน 5 ครั้งถัดไป คำนวณในเบราว์เซอร์ของคุณตามเขตเวลาของเครื่องคุณเอง หากไม่ตรงกับที่ตั้งใจไว้ ให้ปรับนิพจน์ให้ชัดเจนขึ้น
-
4
อ่านคำเตือน
เครื่องมือจะเตือนเมื่อเจอกับดัก ไม่ว่าจะเป็นการกำหนดฟิลด์วันทั้งสองพร้อมกัน วันที่ที่ไม่มีทางเกิดขึ้นจริง หรือตัวดำเนินการที่ cron มาตรฐานไม่รู้จัก
แต่ละฟิลด์แจกแจงออกมาเป็นอะไรบ้าง
ฟิลด์หนึ่งไม่ได้หมายถึงค่าเพียงค่าเดียว แต่หมายถึงชุดของค่า และการรู้ว่าชุดนั้นมีขนาดเท่าไร ก็มักตอบคำถามที่พาคุณมาที่หน้านี้ได้ในทันที
| ฟิลด์ | ช่วงค่า | * ตรงกับ |
หมายเหตุ |
|---|---|---|---|
| นาที | 0-59 | 60 ค่า | ต้นเหตุที่พบบ่อยที่สุดของงานที่รันถี่เกินตั้งใจ |
| ชั่วโมง | 0-23 | 24 ค่า | ใช้นาฬิกาแบบ 24 ชั่วโมง ไม่ใช่ 1-12 |
| วันที่ของเดือน | 1-31 | 31 ค่า | เดือนที่สั้นกว่าจะข้ามวันที่ที่ไม่มีอยู่จริงไปเฉย ๆ |
| เดือน | 1-12 | 12 ค่า | ใช้ JAN ถึง DEC ได้เช่นกัน |
| วันในสัปดาห์ | 0-7 | 7 ค่า | ทั้ง 0 และ 7 คือวันอาทิตย์ |
ตัวดำเนินการภายในฟิลด์: * คือทุกค่า, 1,5,10 คือรายการค่า, 1-5 คือช่วงค่า, */15 คือค่าขั้นที่นับจากจุดเริ่มต้นของช่วง และ 0-45/15 คือค่าขั้นภายในช่วงที่กำหนดไว้
รองรับทั้งชื่อเดือน ชื่อวัน และคำย่อ
เครื่องมืออ่านชื่อเดือนและชื่อวันในสัปดาห์ได้ และจะแจกแจงออกมาเป็นตัวเลขที่ตรงกัน ดังนั้น 30 3 * JAN,JUL 1 จึงรายงานเดือนเป็น 1, 7 และวันในสัปดาห์เป็น 1 ส่วนคำย่อที่มีชื่อเรียกจะถูกขยายเป็นรูปแบบ 5 ฟิลด์ก่อนจะเริ่มประมวลผลอย่างอื่น:
| คำย่อ | ขยายเป็น | ความหมาย |
|---|---|---|
@yearly, @annually |
0 0 1 1 * |
เที่ยงคืนของวันที่ 1 มกราคม |
@monthly |
0 0 1 * * |
เที่ยงคืนของวันที่ 1 ของทุกเดือน |
@weekly |
0 0 * * 0 |
เที่ยงคืนของวันอาทิตย์ |
@daily, @midnight |
0 0 * * * |
เที่ยงคืนของทุกวัน |
@hourly |
0 * * * * |
นาทีที่ 0 ของทุกชั่วโมง |
เครื่องมือรู้จัก @reboot เช่นกัน แต่ไม่มีตารางเวลาให้แจกแจง เพราะมันทำงานครั้งเดียวตอนเครื่องเริ่มทำงาน จึงไม่มีเวลาทำงานให้แสดงตัวอย่าง
คำเตือนที่ควรอ่าน
- กำหนดฟิลด์วันทั้งสองพร้อมกัน:
0 0 1 * MONไม่ได้แปลว่า “วันที่ 1 เฉพาะเมื่อตรงกับวันจันทร์” เพราะ cron มาตรฐานถือว่าฟิลด์วันทั้งสองเป็นแบบ OR เมื่อกำหนดค่าไว้ทั้งคู่ บรรทัดนี้จึงทำงานทั้งในวันที่ 1 ของทุกเดือน และ ทุกวันจันทร์ เครื่องมือจะขึ้นคำเตือนนี้ให้ และตัวอย่างเวลาทำงานก็คำนวณตามกฎ OR เช่นเดียวกัน - วันที่ที่ไม่มีทางเกิดขึ้น:
0 0 30 2 *หมายถึงวันที่ 30 กุมภาพันธ์ นิพจน์นี้ถูกต้องตามไวยากรณ์และ cron ก็รับไว้ แต่มันจะไม่ทำงานเลยสักครั้ง เครื่องมือจะบอกตรง ๆ แทนที่จะแสดงรายการว่างเปล่าโดยไม่อธิบายอะไร - ตัวดำเนินการของ Quartz:
L(วันสุดท้าย),W(วันธรรมดาที่ใกล้ที่สุด),#(วันที่ตรงกับวันนั้นครั้งที่ N ของเดือน) และ?เป็นส่วนขยายของ Quartz ไม่ใช่ crontab มาตรฐาน เมื่ออยู่ในบรรทัดแบบ 5 ฟิลด์ เครื่องมือจะรู้จักและทำเครื่องหมายกำกับไว้ โดยฟิลด์นั้นจะแสดงว่าเป็นตัวดำเนินการของ Quartz แทนที่จะเป็นรายการค่า และจะไม่คำนวณเวลาทำงานให้ เพราะ cron มาตรฐานจะไม่รันบรรทัดนั้นเลย
สิ่งที่ถูกปฏิเสธทันที
- จำนวนฟิลด์ไม่ถูกต้อง: บรรทัด Quartz แบบ 6 ฟิลด์ที่มีวินาที หรือแบบ 7 ฟิลด์ที่มีปี จะถูกปฏิเสธตั้งแต่ขั้นตอนนับจำนวนฟิลด์
- ค่าที่อยู่นอกช่วง: เช่น นาทีที่ 75 หรือเดือนที่ 13
- ช่วงค่าที่เขียนย้อนกลับ: เช่น
5-1 - ค่าขั้นเป็น 0: เช่น
*/0
ทุกครั้งที่ปฏิเสธ เครื่องมือจะระบุฟิลด์และค่าที่เป็นต้นเหตุ คุณจึงแก้เฉพาะจุดนั้นได้ ไม่ต้องเขียนทั้งบรรทัดใหม่
เขตเวลา
ตัวอย่างรอบการทำงานถัดไปคำนวณในเบราว์เซอร์ของคุณ ตามเขตเวลาที่ตั้งไว้ในเครื่องของคุณ ส่วน crontab จะทำงานตามเขตเวลาของเครื่องที่รันมันอยู่ ดังนั้นหากเซิร์ฟเวอร์นั้นตั้งเป็น UTC แต่เครื่องคุณไม่ใช่ ให้เลื่อนเวลาให้ตรงกันก่อนนำมาเทียบ
คำถามที่พบบ่อย
ไม่รองรับในฐานะตารางเวลา บรรทัด Quartz แบบ 6 ฟิลด์ที่มีวินาที หรือแบบ 7 ฟิลด์ที่มีปี จะถูกปฏิเสธตั้งแต่ขั้นตอนนับจำนวนฟิลด์ ส่วนตัวดำเนินการของ Quartz ที่อยู่ในบรรทัดแบบ 5 ฟิลด์ปกติ (L, W, #, ?) เป็นอีกกรณีหนึ่ง คือเครื่องมือจะรู้จักและทำเครื่องหมายกำกับไว้ แต่จะไม่คำนวณเวลาทำงานให้ เพราะ cron มาตรฐานก็ไม่รันบรรทัดนั้นเช่นกัน
สาเหตุที่พบบ่อยมีสองอย่าง คือเขตเวลาของเครื่องคุณกับเซิร์ฟเวอร์ที่รัน crontab ไม่ตรงกัน หรือกำหนดฟิลด์วันไว้ทั้งสองฟิลด์ เพราะเมื่อกำหนดทั้งวันที่ของเดือนและวันในสัปดาห์ cron จะทำงานเมื่อตรงกับเงื่อนไข อย่างใดอย่างหนึ่ง ไม่ใช่ต้องตรงทั้งคู่ 0 0 1 * MON จึงทำงานบ่อยกว่าที่คนส่วนใหญ่คิดไว้มาก และวิธีที่เร็วที่สุดในการจับฟิลด์ที่กว้างกว่าที่คุณคิด คือดูจำนวนค่าที่กำกับอยู่ข้างแต่ละฟิลด์
ได้ เพราะ Kubernetes ใช้ไวยากรณ์มาตรฐานแบบ 5 ฟิลด์ สิ่งเดียวที่ต้องเผื่อไว้คือเรื่องนาฬิกา เนื่องจาก CronJob ทำงานตามเขตเวลาของคลัสเตอร์ (เป็น UTC เว้นแต่จะระบุไว้ใน spec.timeZone) ขณะที่ตัวอย่างเวลาทำงานในหน้านี้ใช้เขตเวลาของเครื่องคุณเอง
ทั้งคู่เป็นคำย่อที่มีชื่อเรียก ซึ่ง cron บน Linux ยอมรับแทนการเขียนครบทั้ง 5 ฟิลด์ โดย @daily (หรือ @midnight) คือ 0 0 * * *, @weekly คือ 0 0 * * 0, @monthly คือ 0 0 1 * *, @yearly (หรือ @annually) คือ 0 0 1 1 * และ @hourly คือ 0 * * * * วางคำย่อใดก็ได้ในกลุ่มนี้ แล้วเครื่องมือจะแสดงรูปแบบ 5 ฟิลด์ที่มันขยายออกมาให้ ยกเว้น @reboot ที่ทำงานตอนเครื่องเริ่มทำงาน จึงไม่มีตารางเวลาและไม่มีเวลาทำงานให้แสดง
เครื่องมือที่เกี่ยวข้อง
อ้างอิงตัวอักษร HTML
รายการที่สามารถค้นหาได้ขององค์ประกอบ HTML พร้อมรหัสชื่อและรหัสตัวเลข รวมถึงฟังก์ชันสำเนาด้วยคลิกเดียวสำหรับตัวอักษรพิเศษและสัญลักษณ์ต่างๆ
ตารางอ้างอิงแป้นพิมพ์ลัด
ค้นหาแป้นพิมพ์ลัดเริ่มต้นตามเอกสารของ VS Code, Chrome และ Bash ที่ใช้ GNU Readline บน macOS, Windows และ Linux
เครื่องสุ่มที่อยู่
สร้างระเบียนคล้ายที่อยู่ 1–20 รายการสำหรับแบบจำลองและการทดสอบ ด้วยรูปแบบประเทศแบบย่อ
ตารางอ้างอิง ASCII
ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL
ตัวสร้างลูกศร CSS
สร้างลูกศร CSS ในเบราว์เซอร์ด้วยทิศทาง สี ขนาด และความหนาของเส้นขอบ แล้วคัดลอกกฎ.
ตัวตรวจสอบความถูกต้องของ JSON
ตรวจสอบไวยากรณ์ JSON และตรวจจับเครื่องหมายจุลภาคต่อท้าย เครื่องหมายอัญประกาศที่ผิด คีย์ซ้ำ และโครงสร้างที่ผิดรูปแบบ พร้อมระบุตำแหน่งข้อผิดพลาดอย่างแม่นยำ
เครื่องมือนี้มีให้บริการในภาษาอื่น
- Cron 표현식 파서 [KO]
- Bộ phân tích biểu thức Cron [VI]
- Parser för cron-uttryck [SV]
- Parser wyrażeń cron [PL]
- Cron-Ausdruck-Parser [DE]
- Cron-expressieparser [NL]
- Analizador de expresiones cron [ES]
- Pengurai Ekspresi Cron [ID]
- محلل تعبيرات cron [AR]
- Analyseur d'expressions cron [FR]
- Analisador de Expressões Cron [PT]
- Cron 式パーサー [JA]
- Cron Expression Parser [EN]
- Parser di espressioni cron [IT]
- Парсер cron-выражений [RU]
- Cron İfadesi Ayrıştırıcı [TR]
- Cron 表达式解析器 [ZH]