Công Cụ Nhanh

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

5 trường: phút giờ ngày tháng thứ (như crontab Linux); 6 trường nếu có giây ở đầu. Nhận cả @daily, @hourly…

Mẫu nhanh

Ý nghĩa

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

Từng trường
Phút00
Giờ99
Ngày trong tháng*mọi giá trị
Tháng*mọi giá trị
Thứ trong tuần1-51, 2, 3, 4, 5

10 lần chạy tiếp theo

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10

Tạo nhanh biểu thức

Chạy
30 8 * * *

Xử lý ngay trên trình duyệt của bạn. Tệp và dữ liệu không được tải lên máy chủ.

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.

Minh hoạ đồng hồ treo tường cạnh tờ lịch để bàn, vài chiếc ghim cắm trên các ngày đều đặn và mũi tên nét đứt vòng qua chúng như một lịch lặp lại

Cách đọc và kiểm tra một biểu thức cron

  1. 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. 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. 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. 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ườngGiá trịVí dụ
1Phút0–5930 = phút thứ 30
2Giờ0–2314 = 2 giờ chiều
3Ngày trong tháng1–311 = ngày mùng 1
4Tháng1–12 hoặc JAN–DEC*/3 = mỗi quý (1, 4, 7, 10)
5Thứ trong tuần0–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-59:00 các ngày làm việc
0 8 * * 18: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ểmCrontab LinuxQuartz / SpringGitHub Actions
Số trường5 (phút → thứ)6–7 (có giây đầu, năm cuối)5, như Linux
Thứ trong tuần0–7, 0 và 7 là Chủ nhật1–7, 1 là Chủ nhật0–6, 0 là Chủ nhật
Ngày và thứ cùng đặtChạy khi khớp MỘT trong haiPhải dùng ? ở một trong hai trườngNhư 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ụngLuô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…