Trình tạo Cron

Tạo biểu thức Cron trực quan

Chọn trường thời gian hoặc dán biểu thức cron → xem 5 lần chạy tiếp theo → sao chép. Miễn phí, không cần đăng ký.

5-field POSIXMiễn phíKhông cần đăng kýXem trước thời gian
Nhập trực tiếp hoặc chỉnh sửa bên dưới
Các trường cron
Phút
0-59
Giờ
0-23
Ngày
1-31
Tháng
1-12
Ngày tuần
0-6
0 * * * *

Đầu mỗi giờ

5 lần chạy tiếp theo
1.15:00 Thứ 2, 4 thg 5, 2026
2.16:00 Thứ 2, 4 thg 5, 2026
3.17:00 Thứ 2, 4 thg 5, 2026
4.18:00 Thứ 2, 4 thg 5, 2026
5.19:00 Thứ 2, 4 thg 5, 2026
Cài đặt nhanh
Bảng cú pháp Cron
5 trường và giá trị
Phút0 - 59*/15Mỗi 15 phút
Giờ0 - 239,17Lúc 9h và 17h
Ngày1 - 311-15Ngày 1 đến 15
Tháng1 - 12*/3Mỗi 3 tháng
Ngày tuần0 - 61-5Thứ 2 đến thứ 6
Biểu thức phổ biến
Nhấn "Dùng" để áp dụng
Ký tự đặc biệt
*, /, -, dấu phẩy
*Dấu sao

Khớp mọi giá trị trong trường

,Dấu phẩy

Phân tách nhiều giá trị: 1,3,5

-Dấu gạch

Xác định phạm vi: 1-5 nghĩa là 1,2,3,4,5

/Dấu gạch chéo

Giá trị bước: */15 nghĩa là mỗi 15 đơn vị

Ví dụ: */15 9-17 * * 1-5 = mỗi 15 phút, từ 9h-17h, thứ 2-6.

Biểu thức Cron là gì?

Biểu thức cron (cron expression) là một chuỗi ngắn gọn dùng để định nghĩa lịch trình chạy tác vụ tự động trong hệ thống Unix/Linux. Cron daemon đọc biểu thức này và tự động kích hoạt lệnh vào đúng thời điểm đã cấu hình. Biểu thức cron tiêu chuẩn gồm 5 trường, mỗi trường cách nhau bằng khoảng trắng, đại diện cho: phút, giờ, ngày trong tháng, tháng, và ngày trong tuần.

Ví dụ, biểu thức 30 9 * * 1-5 có nghĩa: chạy lúc 9:30 sáng, mỗi ngày từ thứ Hai đến thứ Sáu. Biểu thức 0 0 1 * * sẽ chạy vào lúc nửa đêm ngày đầu tiên mỗi tháng. Cú pháp tuy ngắn gọn nhưng rất mạnh mẽ, cho phép bạn cấu hình lịch trình phức tạp chỉ trong một dòng.

Cron được sử dụng rộng rãi trong quản trị hệ thống, DevOps, và phát triển phần mềm. Từ việc sao lưu cơ sở dữ liệu hàng đêm, gửi email định kỳ, cho đến dọn dẹp bộ nhớ tạm — cron là công cụ không thể thiếu trên mọi máy chủ Linux.

Giải thích chi tiết từng trường Cron

Mỗi biểu thức cron 5 trường có cấu trúc cố định. Hiểu rõ từng trường giúp bạn viết và đọc biểu thức chính xác hơn:

Trường 1: Phút (0-59)

Xác định phút nào trong giờ sẽ chạy tác vụ. Giá trị 0 nghĩa là đầu giờ, 30 nghĩa là phút thứ 30, và */5 nghĩa là mỗi 5 phút. Bạn có thể kết hợp: 0,15,30,45 để chạy 4 lần mỗi giờ.

Trường 2: Giờ (0-23)

Sử dụng định dạng 24 giờ. 0 là nửa đêm, 12 là buổi trưa, 9-17 nghĩa là giờ làm việc từ 9h sáng đến 5h chiều. Kết hợp với trường phút: 30 9 nghĩa là 9:30 sáng.

Trường 3: Ngày trong tháng (1-31)

Chỉ định ngày cụ thể trong tháng. 1 là ngày đầu tiên, 1,15 là ngày 1 và 15. Lưu ý rằng nếu bạn chỉ định ngày 31 nhưng tháng chỉ có 30 ngày, tác vụ sẽ không chạy trong tháng đó.

Trường 4: Tháng (1-12)

Xác định tháng nào sẽ chạy. 1 là tháng Giêng, */3 là mỗi 3 tháng (tháng 1, 4, 7, 10). Hữu ích cho báo cáo quý hoặc bảo trì theo mùa.

Trường 5: Ngày trong tuần (0-6)

0 hoặc 7 là Chủ nhật, 1 là thứ Hai, 5 là thứ Sáu. Biểu thức 1-5 nghĩa là từ thứ Hai đến thứ Sáu (ngày làm việc). 0,6 nghĩa là cuối tuần.

Các biểu thức Cron phổ biến và ví dụ

Dưới đây là những biểu thức cron thường được sử dụng nhất trong thực tế:

  • * * * * * — Mỗi phút. Thường dùng cho hệ thống giám sát hoặc kiểm tra sức khỏe (health check).
  • */5 * * * * — Mỗi 5 phút. Phổ biến cho cập nhật cache hoặc kiểm tra hàng đợi (queue).
  • 0 * * * * — Đầu mỗi giờ. Lý tưởng cho đồng bộ hóa dữ liệu hoặc ghi log thống kê.
  • 0 0 * * * — Hàng ngày lúc nửa đêm. Thường dùng cho sao lưu cơ sở dữ liệu, xoay vòng log, hoặc tạo báo cáo hàng ngày.
  • 0 9 * * 1 — Mỗi thứ Hai lúc 9h sáng. Phù hợp cho gửi email báo cáo tuần hoặc nhắc nhở nhóm.
  • 0 0 1 * * — Ngày đầu tiên mỗi tháng lúc nửa đêm. Dùng cho thanh toán định kỳ, tổng hợp dữ liệu tháng.
  • 30 8 * * 1-5 — 8:30 sáng các ngày thường. Hoàn hảo cho gửi thông báo buổi sáng hoặc báo cáo hàng ngày.
  • 0 */6 * * * — Mỗi 6 giờ. Cân bằng giữa tần suất cập nhật và tải hệ thống.

Cron trên các nền tảng khác nhau

Mặc dù cú pháp cron ban đầu được phát triển cho Unix/Linux, ngày nay nó được sử dụng rộng rãi trên nhiều nền tảng khác nhau với một số biến thể:

Linux (crontab)

Hệ thống cron truyền thống. Sử dụng lệnh crontab -e để chỉnh sửa lịch trình. Mỗi dòng gồm biểu thức 5 trường theo sau là lệnh cần chạy. Ví dụ: 0 2 * * * /usr/bin/backup.sh.

AWS CloudWatch Events / EventBridge

AWS sử dụng biểu thức cron 6 trường (thêm trường giây hoặc năm tùy dịch vụ). Cú pháp hơi khác: cron(0 9 * * ? *) — dùng ? thay * cho trường ngày/tuần. Đây là một lỗi phổ biến khi chuyển từ Linux sang AWS.

GitHub Actions

GitHub Actions hỗ trợ cron 5 trường tiêu chuẩn trong schedule trigger. Lưu ý quan trọng: thời gian chạy dựa trên múi giờ UTC, và GitHub không đảm bảo thực thi chính xác theo giây — có thể trễ vài phút khi hệ thống tải cao.

Kubernetes CronJob

Kubernetes sử dụng cú pháp cron 5 trường chuẩn trong CronJob manifest. Hỗ trợ thêm các chính sách xử lý khi tác vụ chạy quá lâu: concurrencyPolicy: Forbid ngăn chạy trùng lặp.

Gỡ lỗi cron — Các sai lầm thường gặp

Cron tuy đơn giản nhưng có nhiều cạm bẫy tinh vi. Dưới đây là các lỗi phổ biến nhất và cách khắc phục:

  • Múi giờ sai: Cron daemon trên server thường sử dụng UTC. Nếu bạn ở Việt Nam (UTC+7), 0 9 * * * sẽ chạy lúc 16h giờ Việt Nam, không phải 9h sáng. Kiểm tra múi giờ server bằng timedatectl.
  • Đường dẫn không tuyệt đối: Trong môi trường cron, biến PATH thường rất hạn chế. Luôn dùng đường dẫn tuyệt đối cho lệnh: /usr/bin/python3 thay vì python3.
  • Biến môi trường thiếu: Cron không load profile (.bashrc, .zshrc). Nếu script cần biến môi trường, hãy định nghĩa trực tiếp trong crontab hoặc source file profile trong script.
  • Quyền truy cập file: Script cần có quyền thực thi (chmod +x script.sh). Cron chạy với quyền của user sở hữu crontab.
  • Không kiểm tra log: Luôn redirect output để debug: 0 * * * * /script.sh >> /var/log/myscript.log 2>&1. Không có log = không có cách biết tại sao script không chạy.
  • Nhầm lẫn ngày và ngày trong tuần: Khi cả hai trường đều khác *, cron sẽ chạy khi BẤT KỲ điều kiện nào khớp (OR), không phải cả hai (AND). Đây là hành vi gây nhầm lẫn nhất.

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

Công cụ khác bạn có thể thích

Thêm công cụ trong Developer Tools

Giới thiệu về Developer Tools

Công cụ developer tự động hóa các phần lặp đi lặp lại của công việc phần mềm: format JSON, encode/decode Base64, decode JWT để xác minh claim của token, tạo UUID, format XML, diff cấu hình. Đây không phải tác vụ hào nhoáng, nhưng là các điểm nghẽn ngốn 10-15 phút nhiều lần mỗi ngày — cộng lại hàng giờ mỗi tuần. Chạy chúng trên tab trình duyệt sạch sẽ hơn vật lộn với phụ thuộc CLI hay extension IDE có thể gửi dữ liệu riêng tư của bạn cho bên thứ ba.

Vì sao nó quan trọng

Công cụ developer client-side nhanh về cơ bản quan trọng vì chúng được dùng với dữ liệu nhạy cảm. JWT token chứa danh tính người dùng. Payload Base64 có thể encode API key. JSON dump bao gồm bản ghi khách hàng. Nếu một 'công cụ developer' gửi input của bạn lên server để xử lý, bạn vừa rò rỉ production secret. Công cụ dev của ZestLab chạy 100% client-side không có network call nào sau khi load page — những gì bạn paste vẫn ở trong trình duyệt.

Riêng tư và an toàn

Tất cả công cụ developer ở đây chạy trong trình duyệt bằng JavaScript thuần. Không có 'decode server' hay 'format API' — JWT, JSON, payload encode của bạn được parse bởi code chạy trên laptop của bạn. Tự xác minh bằng DevTools trình duyệt → Network tab: bạn sẽ thấy không có request nào khi dùng bất kỳ công cụ nào. Đó là tiêu chuẩn chúng tôi giữ vì công cụ dev xử lý secret.

Thực hành tốt

  • Không bao giờ paste JWT hay API token production vào BẤT KỲ công cụ online nào mà không xác minh chạy client-side (check tab Network)
  • Dùng chế độ ẩn danh trình duyệt để decode một lần các payload nhạy cảm
  • Bookmark công cụ bạn dùng hàng ngày — URL công cụ ZestLab ổn định, không cần tài khoản
  • Khi format JSON có secret để team review, redact credential trước khi share output