ตัวสร้างนิพจน์ cron
เขียนและอ่านตารางเวลา crontab พิมพ์นิพจน์ cron แล้วดูเป็นคำพูดว่ามันทำงานเมื่อใด เวลาทำงานครั้งถัดไป และแต่ละช่องในห้าช่องหมายถึงอะไร
ทุกนาที
การทำงานครั้งถัดไป
เวลาที่แสดงอยู่ในเขตเวลาของเครื่องคุณ () ส่วน cron ใช้เขตเวลาของเซิร์ฟเวอร์ ซึ่งบ่อยครั้งไม่ใช่เขตเดียวกัน
ตารางเวลาที่ใช้บ่อย
เลือกหนึ่งรายการเพื่อใส่ลงในช่องด้านบน
| * * * * * | ทุกนาที |
| */5 * * * * | ทุก 5 นาที |
| */15 * * * * | ทุก 15 นาที |
| */30 * * * * | ทุกครึ่งชั่วโมง |
| 0 * * * * | ทุกชั่วโมง |
| 0 */2 * * * | ทุก 2 ชั่วโมง |
| 0 */6 * * * | ทุก 6 ชั่วโมง |
| 0 */12 * * * | วันละสองครั้ง |
| 0 0 * * * | ทุกวันตอนเที่ยงคืน |
| 0 9 * * * | ทุกวันตอน 9 โมงเช้า |
| 0 9 * * 1-5 | วันจันทร์ถึงวันศุกร์ตอน 9 โมงเช้า |
| 0 9 * * 6,0 | วันเสาร์และวันอาทิตย์ตอน 9 โมง |
| 0 0 * * 1 | ทุกวันจันทร์ตอนเที่ยงคืน |
| 0 18 * * 5 | ทุกวันศุกร์ตอน 6 โมงเย็น |
| 0 0 1 * * | วันแรกของเดือน |
| 0 0 1 1 * | วันแรกของปี |
ความหมายของแต่ละช่อง
| ช่อง | ค่าที่ยอมรับ |
|---|---|
| นาที | 0 – 59 |
| ชั่วโมง | 0 – 23 |
| วันที่ของเดือน | 1 – 31 |
| เดือน | 1 – 12, JAN – DEC |
| วันในสัปดาห์ | 0 – 6, SUN – SAT (0 = 7) |
อักขระพิเศษ
| อักขระ | ความหมาย |
|---|---|
| * | ค่าใดก็ได้ |
| , | คั่นค่าต่าง ๆ ในรายการ |
| - | ช่วงของค่า |
| / | ก้าวภายในช่วง |
ทางลัด
| @yearly, @annually | 0 0 1 1 * |
| @monthly | 0 0 1 * * |
| @weekly | 0 0 * * 0 |
| @daily, @midnight | 0 0 * * * |
| @hourly | 0 * * * * |
| @reboot | — |
ไม่ได้เป็นส่วนหนึ่งของ cron ตามมาตรฐาน POSIX แต่แทบทุกการนำไปใช้งานยอมรับ
จุดที่คนมักพลาด
- เมื่อวันที่ของเดือนและวันในสัปดาห์ถูกจำกัดทั้งคู่ cron จะทำงานในวันที่ตรงกับอย่างใดอย่างหนึ่ง ไม่ใช่ทั้งสองอย่างพร้อมกัน "* * 3 * 1" ทำงานในวันที่ 3 ของเดือนและทุกวันจันทร์ ข้อยกเว้นคือเมื่อช่องใดช่องหนึ่งขึ้นต้นด้วยเครื่องหมายดอกจัน: "* * */2 * 1" ทำงานเฉพาะวันที่เป็นเลขคี่ซึ่งเป็นวันจันทร์ด้วย หน้าคู่มืออธิบายเรื่องนี้ผิด
- ให้เซิร์ฟเวอร์และ cron ทำงานด้วยเวลา UTC ตารางเวลาที่เขียนในเขตที่ใช้เวลาออมแสงจะข้ามการทำงานหนึ่งครั้งต่อปีและทำซ้ำอีกครั้งเมื่อเปลี่ยนกลับ
- cron มาตรฐานไม่มีช่องสำหรับวินาทีหรือปี ถ้าคุณต้องการความละเอียดระดับนั้น cron ไม่ใช่เครื่องมือที่ถูกต้อง
- เลี่ยง @reboot เพราะขึ้นอยู่กับว่าเครื่องถูกเริ่มใหม่อย่างไรและบริการใดพร้อมแล้วในตอนนั้น ทำให้คาดเดาได้ยาก
- ตารางเวลาที่ไม่พอดีกับห้าช่องสามารถแบ่งเป็นสองบรรทัดได้ หากต้องการให้ทำงานทุก 90 นาที ให้เขียน "0 */3 * * *" และ "30 1/3 * * *" คู่กัน
- เขียนคำสั่งด้วยเส้นทางแบบเต็ม cron ทำงานด้วย PATH ที่สั้นมากและแทบไม่มีตัวแปรสภาพแวดล้อมที่เชลล์ของคุณมี
คำถามที่พบบ่อยเกี่ยวกับนิพจน์ cron
ห้าช่องหมายถึงอะไร
ตามลำดับนี้: นาที ชั่วโมง วันที่ของเดือน เดือน และวันในสัปดาห์ ช่องที่มีเครื่องหมายดอกจันตรงกับทุกค่า
วันอาทิตย์คือ 0 หรือ 7
ทั้งสองอย่าง การนำไปใช้งานส่วนใหญ่ยอมรับทั้ง 0 และ 7 สำหรับวันอาทิตย์ รวมถึงชื่อย่อสามตัวอักษรตั้งแต่ SUN ถึง SAT
ทำไมงานของฉันไม่ทำงานในเวลาที่คาดไว้
เหตุผลที่พบบ่อยคือเซิร์ฟเวอร์อยู่คนละเขตเวลา กฎเรื่องวันที่ของเดือนกับวันในสัปดาห์ข้างต้น หรือคำสั่งล้มเหลวเพราะ cron ไม่ได้โหลดโปรไฟล์เชลล์ของคุณ
หน้านี้ส่งนิพจน์ของฉันไปที่ใดหรือไม่
ไม่ นิพจน์ถูกอ่านและคำนวณเวลาทำงานในเบราว์เซอร์ของคุณ ไม่มีการอัปโหลดใด ๆ