Trả lời nhanh
Biểu thức cron gồm 5 trường cách nhau bởi khoảng trắng: phút, giờ, ngày trong tháng, tháng, thứ trong tuần. Ví dụ “0 9 * * 1-5” nghĩa là chạy lúc 9:00 từ thứ Hai đến thứ Sáu; “*/15 * * * *” là mỗi 15 phút.
Biểu thức cron là gì?
Nhập biểu thức cron để đọc ngay thành câu tiếng Việt, xem từng trường được hiểu ra sao và 10 lần chạy tiếp theo theo giờ Việt Nam (hoặc UTC, Tokyo, New York…). Công cụ hiểu cú pháp crontab Linux (Vixie cron): dấu *, dấu phẩy, khoảng 1-5, bước */10, tên tháng và thứ (JAN, MON), macro @daily, @hourly, và dạng 6 trường có giây ở đầu. Phần “Tạo nhanh” giúp viết cron mà không cần nhớ thứ tự các trường. Mọi tính toán chạy trên trình duyệt.

Cách đọc và kiểm tra một biểu thức cron
- 1
Dán biểu thức vào ô “Biểu thức cron”, ví dụ dòng lấy từ crontab -e (chỉ lấy 5 trường đầu, bỏ phần lệnh phía sau).
- 2
Đọc câu giải thích và bảng từng trường để chắc lịch đúng ý. Nếu sai cú pháp, dòng báo lỗi chỉ rõ trường nào có vấn đề.
- 3
Chọn múi giờ của máy chủ (máy chủ thường đặt UTC) để xem 10 lần chạy tiếp theo đúng như máy chủ sẽ chạy.
- 4
Muốn tạo cron mới, dùng phần “Tạo nhanh biểu thức”: chọn kiểu lặp, giờ, thứ rồi bấm “Dùng biểu thức này”.
Năm trường của crontab
| Vị trí | Trường | Giá trị | Ví dụ |
|---|---|---|---|
| 1 | Phút | 0–59 | 30 = phút thứ 30 |
| 2 | Giờ | 0–23 | 14 = 2 giờ chiều |
| 3 | Ngày trong tháng | 1–31 | 1 = ngày mùng 1 |
| 4 | Tháng | 1–12 hoặc JAN–DEC | */3 = mỗi quý (1, 4, 7, 10) |
| 5 | Thứ trong tuần | 0–7 hoặc SUN–SAT (0 và 7 đều là Chủ nhật) | 1-5 = thứ Hai đến thứ Sáu |
Vuốt ngang để xem cả bảng →
Ký hiệu: * mọi giá trị · , liệt kê (1,15) · - khoảng (9-17) · / bước (*/10 nghĩa là 0, 10, 20…).
Biểu thức cron hay dùng
| Biểu thức | Ý nghĩa |
|---|---|
| * * * * * | Mỗi phút |
| */5 * * * * | Mỗi 5 phút |
| 0 * * * * | Đầu mỗi giờ |
| 0 0 * * * | Nửa đêm mỗi ngày (giống @daily) |
| 30 2 * * * | 2:30 sáng mỗi ngày, hợp để sao lưu |
| 0 9 * * 1-5 | 9:00 các ngày làm việc |
| 0 8 * * 1 | 8:00 sáng thứ Hai hằng tuần |
| 0 0 1 * * | Nửa đêm ngày mùng 1 hằng tháng |
| 0 0 1 1 * | Nửa đêm 1/1 hằng năm (giống @yearly) |
Khác nhau giữa crontab Linux, Quartz và GitHub Actions
| Điểm | Crontab Linux | Quartz / Spring | GitHub Actions |
|---|---|---|---|
| Số trường | 5 (phút → thứ) | 6–7 (có giây đầu, năm cuối) | 5, như Linux |
| Thứ trong tuần | 0–7, 0 và 7 là Chủ nhật | 1–7, 1 là Chủ nhật | 0–6, 0 là Chủ nhật |
| Ngày và thứ cùng đặt | Chạy khi khớp MỘT trong hai | Phải dùng ? ở một trong hai trường | Như Linux |
| Ký hiệu thêm | @daily, @reboot… | L, W, # (ngày cuối tháng, thứ Sáu thứ 2…) | Không có macro |
| Múi giờ | Theo giờ của máy chủ (hoặc CRON_TZ) | Theo cấu hình ứng dụng | Luôn là UTC |
Vuốt ngang để xem cả bảng →
GitHub Actions chạy theo UTC: muốn 8:00 giờ Việt Nam thì viết 0 1 * * * (8 − 7 = 1). Lịch có thể trễ vài phút khi GitHub đông.
Ví dụ thực tế
Sao lưu website trên aaPanel lúc 2 giờ sáng
Biểu thức 0 2 * * * chạy lúc 02:00 mỗi ngày. Máy chủ đặt múi giờ UTC thì 02:00 UTC là 09:00 sáng giờ Việt Nam; chọn múi giờ UTC ở ô bên phải để kiểm tra trước khi lưu.
Gửi báo cáo cuối tuần
0 17 * * 5 chạy lúc 17:00 mỗi thứ Sáu. Danh sách 10 lần chạy tiếp theo cho thấy ngay các ngày thứ Sáu sắp tới.
Lịch có cả ngày và thứ
0 0 13 * 5 KHÔNG phải “thứ Sáu ngày 13” mà là “ngày 13 hoặc thứ Sáu bất kỳ”, vì cron Linux dùng phép HOẶC khi cả hai trường đều được đặt.
Workflow GitHub Actions chạy 7:30 sáng giờ Việt Nam
Đổi sang UTC: 7:30 − 7 giờ = 0:30, nên viết schedule: cron: '30 0 * * *'. Chọn múi giờ UTC ở đây để thấy giờ chạy thật.
Lỗi thường gặp
- Cron chạy sai giờ 7 tiếng.
- Máy chủ hoặc dịch vụ (GitHub Actions, nhiều dịch vụ đám mây) dùng UTC. Đổi giờ sang UTC hoặc đặt CRON_TZ=Asia/Ho_Chi_Minh ở đầu crontab nếu bản cron hỗ trợ.
- Viết * 9 * * * mà lệnh chạy 60 lần.
- Dấu * ở trường phút nghĩa là mọi phút trong giờ 9. Muốn chạy một lần lúc 9:00 thì viết 0 9 * * *.
- Báo lỗi với ký hiệu L, W hoặc #.
- Đó là cú pháp Quartz / Spring, crontab Linux không hiểu. Với “ngày cuối tháng” trên Linux, chạy ngày 28–31 rồi kiểm tra ngày mai có phải mùng 1 trong lệnh.
- Đặt ngày 31 mà có tháng không chạy.
- Tháng không có ngày 31 (tháng 4, 6, 9, 11, tháng 2) sẽ bị bỏ qua, cron không tự lùi về ngày cuối tháng.
Cron chạy theo múi giờ nào?
Cron dùng giờ hệ thống của máy chủ. Xem bằng lệnh timedatectl hoặc date. Nhiều VPS mặc định UTC, nên lịch 0 9 * * * sẽ chạy lúc 16:00 giờ Việt Nam.
Danh sách lần chạy ở công cụ này tính theo múi giờ bạn chọn. Khi múi giờ có giờ mùa hè (châu Âu, Mỹ), giờ không tồn tại trong ngày đổi giờ sẽ bị bỏ qua.
Thuật ngữ
- Cron
- Trình lập lịch có sẵn trên Linux / Unix, tự chạy lệnh theo giờ đã hẹn.
- Crontab
- Bảng lịch của cron; mỗi dòng gồm biểu thức thời gian và lệnh cần chạy. Sửa bằng crontab -e.
- Cron job
- Một tác vụ đặt lịch, ví dụ sao lưu database mỗi đêm.
- Bước (step)
- Ký hiệu /n: */15 ở trường phút là phút 0, 15, 30, 45.
- Macro
- Tên viết tắt cho lịch hay dùng: @hourly, @daily, @weekly, @monthly, @yearly.
- UTC
- Giờ quốc tế gốc; giờ Việt Nam là UTC+7, không đổi giờ mùa hè.
Câu hỏi thường gặp
Cron có chạy mỗi giây được không?
Crontab Linux nhỏ nhất là mỗi phút. Một số thư viện (node-cron, Spring) cho thêm trường giây ở đầu; công cụ này đọc được dạng 6 trường đó.
@reboot là gì?
Lệnh chạy một lần mỗi khi máy chủ khởi động, không có lịch lặp nên không tính được lần chạy tiếp theo.
Làm sao xem các cron đang có trên máy chủ?
Chạy crontab -l cho người dùng hiện tại, xem thêm /etc/crontab và thư mục /etc/cron.d. Trên aaPanel, các tác vụ nằm ở mục Cron.
*/7 trong trường phút có chạy đều mỗi 7 phút không?
Không hẳn: */7 là phút 0, 7, 14… 56 rồi quay lại 0 ở giờ sau, nên khoảng cách cuối giờ chỉ còn 4 phút.
Lệnh cron chạy mà không có kết quả, xem lỗi ở đâu?
Cron gửi đầu ra qua thư hệ thống hoặc bỏ đi. Thêm >> /tmp/viec.log 2>&1 sau lệnh để ghi log, và dùng đường dẫn đầy đủ (/usr/bin/php thay vì php) vì cron có biến PATH rất ngắn.
Ký tự % trong lệnh crontab có vấn đề gì?
Trong crontab, % nghĩa là xuống dòng, nên lệnh như date +%Y bị cắt. Viết \% (thêm dấu gạch ngược) hoặc đưa lệnh vào một tệp script.
Đánh giá và bình luận
Đang tải…