Giải thích biểu thức cron

Đọc biểu thức cron bằng lời và xem 10 lần chạy tiếp theo.

Năm trường: phút, giờ, ngày trong tháng, tháng, ngày trong tuần. Thêm trường thứ sáu ở đầu để có giây.

Lịch thường dùng
Nói bằng lời

Lúc 09:00, từ thứ Hai đến thứ Sáu

Từng trường
TrườngGiá trịÝ nghĩa
phút00
giờ909:00
ngày trong tháng*mỗi ngày
tháng*mỗi tháng
ngày trong tuần1-5thứ Hai đến thứ Sáu

10 lần chạy tiếp theo

Đang tính các lần chạy tiếp theo…

Giờ mùa hè: thời điểm không tồn tại (giờ bị nhảy qua) sẽ bị bỏ qua; thời điểm xảy ra hai lần chỉ chạy một lần, lần đầu tiên.

Công cụ này làm gì

Biểu thức cron là cách viết gọn một lịch chạy: */5 * * * * nghĩa là "mỗi 5 phút", còn 0 9 * * 1-5 là "lúc 9:00 các ngày trong tuần". Nó được dùng trong crontab của Linux, hệ thống CI, trình lập lịch container và nhiều thư viện, và rất dễ viết sai một cách tinh vi. Công cụ này đọc biểu thức như một bộ lập lịch, giải thích bằng tiếng Việt, tách từng trường và liệt kê 10 lần chạy tiếp theo theo múi giờ bạn chọn. Biểu thức không rời khỏi trình duyệt.

Các trường

Có năm trường, cách nhau bằng dấu cách: phút (0-59), giờ (0-23), ngày trong tháng (1-31), tháng (1-12 hoặc JAN-DEC), ngày trong tuần (0-7, trong đó 0 và 7 đều là Chủ nhật, hoặc SUN-SAT). Thêm một trường ở đầu thì trường đó là giây, như trong Spring và Quartz. Mỗi trường nhận * cho mọi giá trị, một số, danh sách như 1,15, khoảng như 9-17 và bước như */15 (mỗi 15 đơn vị) hay 10-30/5. Các lối tắt @hourly, @daily, @weekly, @monthly, @yearly cũng được hiểu.

Ví dụ

  • */5 * * * *: mỗi 5 phút.
  • 0 9 * * 1-5: lúc 09:00 từ thứ Hai đến thứ Sáu. Tính từ sáng thứ Ba 13/10/2026 ở TP. Hồ Chí Minh, các lần chạy tiếp theo là 09:00 ngày 13, 14, 15, 16 và thứ Hai 19/10.
  • */10 * * * * *: có sáu trường nên trường đầu là giây, tức mỗi 10 giây.
  • */7 * * * * không phải "mỗi 7 phút": các phút là 0, 7, 14... đến 56 rồi lại về 0, nên có khoảng cách 4 phút ở đầu mỗi giờ.

Ngày trong tháng và ngày trong tuần

Khi cả hai trường này đều được đặt, cron cổ điển chạy khi một trong hai khớp, không cần cả hai. Vì vậy 0 0 13 * 5 không có nghĩa "thứ Sáu ngày 13": nó chạy vào mọi ngày 13 và mọi thứ Sáu. Trong tháng 10/2026, lịch này chạy vào ngày 2, 9, 13, 16, 23 và 30. Nếu một trong hai trường bắt đầu bằng * thì chỉ trường còn lại được xét.

Múi giờ và giờ mùa hè

Biểu thức cron không có múi giờ riêng, bộ lập lịch dùng múi giờ của máy hoặc của dịch vụ. Hãy chọn đúng múi giờ đó. Khi đồng hồ nhảy tới, giờ bị bỏ qua không tồn tại nên công việc đặt lúc 02:30 bị bỏ qua hôm đó; khi đồng hồ lùi lại, một thời điểm như 01:30 xảy ra hai lần và công việc chỉ chạy một lần, lần đầu tiên. Các bộ lập lịch thật có thể khác nhau ở điểm này.

Không được hỗ trợ

Các ký tự ?, L, W, # và trường năm là của Quartz và Spring, không phải cron cổ điển. Công cụ báo rõ thay vì đoán; hãy viết lại bằng các trường thông thường.

Để kiểm tra mẫu dòng trong nhật ký, hãy dùng kiểm tra regex; để so hai phiên bản crontab, dùng so sánh văn bản.

Câu hỏi thường gặp

Có hỗ trợ giây không?

Có. Viết sáu trường thì trường đầu được đọc là giây, kiểu của Spring và Quartz. Với năm trường là dạng cổ điển bắt đầu bằng phút.

Vì sao biểu thức có cả ngày và thứ lại chạy nhiều hơn tôi nghĩ?

Vì cron cổ điển chạy khi một trong hai trường khớp. `0 0 13 * 5` chạy vào mọi ngày 13 và mọi thứ Sáu. Đặt dấu sao ở một trường để chỉ xét trường còn lại.

Tôi có dùng được ?, L, W hay # không?

Không trong công cụ này. Đó là phần mở rộng của Quartz và Spring. Công cụ chỉ ra ký tự gây lỗi để bạn viết lại bằng các trường thông thường.

Biểu thức có bị gửi đi đâu không?

Không. Biểu thức được phân tích ngay trong trình duyệt và các lần chạy được tính ở đó bằng dữ liệu múi giờ có sẵn.