Giải Mã Biểu Thức Cron - đọc bằng lời thường
Giải mã biểu thức cron
Năm trường: phút, giờ, ngày trong tháng, tháng, thứ trong tuần.
Từng trường một
| Trường | Viết là | Nghĩa là |
|---|
Những lần chạy tới
| # | Chạy lúc |
|---|
Giờ hiển thị theo múi giờ của thiết bị bạn. Máy chủ thật sự chạy tác vụ có thể ở múi khác.
Công cụ này làm gì
Cú pháp cron rất ngắn gọn và dễ đọc nhầm, còn cái giá của việc đọc nhầm là một tác vụ chạy sai giờ suốt nhiều tháng mà không ai để ý. Trang này dịch dòng đó ngược lại thành một câu, và hữu ích hơn nữa, liệt kê đúng những ngày nó sẽ chạy.
Cách dùng
- 1 Dán dòng cron của bạn, hoặc bắt đầu từ một mẫu có sẵn.
- 2 Đọc câu diễn giải rồi kiểm từng trường một.
- 3 Đối chiếu với danh sách các lần chạy tới - lỗi lộ ra ở đó.
Năm trường
Luôn theo thứ tự này, luôn cách nhau bằng dấu cách. Mỗi trường nhận một con số, một danh sách kiểu 1,15, một khoảng kiểu 9-17, một bước kiểu */5, hoặc dấu sao nghĩa là mọi giá trị.
| # | Trường | Giá trị hợp lệ | Ghi chú |
|---|---|---|---|
| 1 | Phút | 0-59 | — |
| 2 | Giờ | 0-23 | — |
| 3 | Ngày trong tháng | 1-31 | Xem quy tắc ngày bên dưới |
| 4 | Tháng | 1-12 | Chấp nhận cả JAN-DEC |
| 5 | Thứ trong tuần | 0-7 | 0 và 7 đều là Chủ nhật; chấp nhận SUN-SAT |
Cái bẫy của trường ngày
Khi cả trường ngày trong tháng lẫn trường thứ trong tuần đều khác dấu sao, cron chạy tác vụ nếu một trong hai khớp, chứ không phải cả hai. Vậy "0 0 1 * MON" chạy vào ngày 1 mỗi tháng và cả mỗi thứ Hai. Lần đầu gặp, hầu như ai cũng bất ngờ, nên công cụ sẽ cảnh báo khi rơi vào trường hợp đó.
Bước nhảy không phải "cứ mỗi N kể từ bây giờ"
*/20 ở trường phút nghĩa là phút 0, 20 và 40 của mỗi giờ - không phải "hai mươi phút sau lần chạy trước". Nếu một lần chạy mất 25 phút, lần kế vẫn bắt đầu ở phút 40. Bước nhảy đếm từ đầu khoảng, và 5-20/5 đếm từ 5.
Múi giờ và những giờ biến mất
Cron chạy theo đồng hồ máy chủ chứ không phải của bạn, nên một tác vụ đặt lúc 02:30 có thể nổ vào giờ địa phương khác với bạn tưởng. Tệ hơn, ở nơi có giờ mùa hè, giờ đó một đêm trong năm hoàn toàn không tồn tại và một đêm khác lại xảy ra hai lần. Việc gì không được bỏ sót cũng không được chạy lặp, hãy hẹn ngoài khoảng 01:00-03:00.