Hẹn lịch rõ ràng cho tác vụ định kỳ

Tạo biểu thức cron online

Sao lưu ban đêm, đồng bộ mỗi 5 phút hay chạy báo cáo đầu tuần: chọn lịch phù hợp rồi sao chép biểu thức vào crontab. Có thể dán biểu thức sẵn có để kiểm tra cú pháp và thời gian chạy tiếp theo.

BIỂU THỨC CRONChuẩn Linux · 5 trường
*/5Phút
*Giờ
*Ngày
*Tháng
*Thứ

Mỗi 5 phút / UTC

01

Thiết lập lịch chạy

Cập nhật ngay khi sửa
Bước
Mọi giá trị *
Mọi giá trị *
Mọi giá trị *
Mọi giá trị *

Bước được tính lại trong từng trường. Nếu cùng giới hạn ngày và thứ, chỉ cần một điều kiện khớp.

Mọi phép tính được xử lý trong trình duyệt.Không cần tài khoản, không tải dữ liệu lên.

Một số lịch cron thường dùng

*/5 * * * *

Mỗi 5 phút

30 2 * * *

Mỗi ngày lúc 02:30

0 9 * * 1-5

Thứ Hai đến thứ Sáu lúc 09:00

Biểu thức cron khác gì với một cron job?

Biểu thức cron chỉ quy định thời điểm thực hiện. Một cron job trong crontab của người dùng Linux còn có lệnh cần chạy phía sau 5 trường thời gian. Vì vậy, tạo được lịch đúng chưa có nghĩa là tác vụ đã được cài đặt trên máy chủ.

Với các việc như sao lưu cơ sở dữ liệu, dọn log hoặc nhập dữ liệu định kỳ, nên kiểm tra những lần chạy tiếp theo trước khi đưa vào vận hành. Công cụ tính lịch ngay trong trình duyệt và không gửi lệnh đến VPS của bạn.

Tạo lịch chạy từ nhu cầu thực tế

  1. Chọn lịch mẫu gần nhất với nhu cầu, rồi chỉnh các trường còn lại.
  2. Dùng danh sách cho nhiều giá trị riêng lẻ hoặc khoảng cho một dãy liên tiếp.
  3. Nếu kiểm tra cấu hình cũ, chỉ dán 5 trường thời gian, không kèm lệnh.
  4. Đối chiếu lịch UTC với múi giờ máy chủ trước khi sao chép.

Cú pháp crontab: thứ tự 5 trường

Các trường cách nhau bằng dấu cách, theo thứ tự phút, giờ, ngày trong tháng, tháng và thứ. Chủ nhật là 0 hoặc 7; thứ Hai là 1, không phải 2. Có thể dùng JAN–DECSUN–SAT trong biểu thức thay vì tên tháng, thứ bằng tiếng Việt.

TrườngGiá trị
Phút059
Giờ023
Ngày trong tháng131
Tháng112
Thứ07
  • * chọn mọi giá trị của trường.
  • , liệt kê các giá trị, ví dụ 0,30.
  • - chỉ khoảng bao gồm hai đầu, ví dụ 1-5.
  • / đặt bước trong trường, ví dụ */15.

Ví dụ cron chạy mỗi 5 phút, hằng ngày và hằng tuần

Giờ chạy được hiểu theo múi giờ của bộ lập lịch. Khoảng thứ Hai đến thứ Sáu không tự bỏ qua ngày lễ; nếu cần, hãy kiểm tra lịch nghỉ trong chương trình được gọi.

Biểu thứcLịch chạy
*/5 * * * *Mỗi 5 phút
30 2 * * *Mỗi ngày lúc 02:30
0 9 * * 1-5Thứ Hai đến thứ Sáu lúc 09:00
0 0 * * 0Chủ nhật lúc 00:00
0 0 1 * *Ngày 1 mỗi tháng lúc 00:00
0 0 29 2 *Ngày 29 tháng 2 trong năm nhuận

Đưa lịch vào crontab trên Linux

Mở cấu hình của người dùng hiện tại bằng crontab -e. Ví dụ dưới đây chạy tập lệnh sao lưu mỗi ngày lúc 02:30 theo múi giờ mà cron trên máy chủ sử dụng.

Nên ghi đường dẫn tuyệt đối và kiểm tra quyền thực thi. Dịch vụ cron phải hoạt động; các biến môi trường mà tập lệnh cần cũng phải được thiết lập. Lịch xem trước không kiểm tra kết quả thực thi của tập lệnh.

30 2 * * * /usr/local/bin/backup.sh

Giải đáp khi viết biểu thức cron

Lịch hiển thị đã theo giờ Việt Nam chưa?

Chưa. Phần xem trước luôn dùng UTC. Bản thân biểu thức không chứa múi giờ; múi giờ do bộ lập lịch quyết định. Hãy đối chiếu với cấu hình máy chủ nếu muốn tác vụ chạy theo giờ Việt Nam.

Tại sao thứ Hai lại dùng số 1?

Cron đánh số Chủ nhật là 0 hoặc 7, thứ Hai là 1 và thứ Bảy là 6. Đây là mã ngày của cú pháp, không phải số thứ trong cách gọi ngày bằng tiếng Việt.

Chọn cả ngày trong tháng và thứ thì có cần khớp cả hai?

Khi cả hai trường đều bị giới hạn, chỉ cần một trường khớp. 0 9 1 * MON chạy vào ngày 1 hoặc thứ Hai lúc 09:00. Nếu một trường bắt đầu bằng *, cả hai điều kiện ngày đều phải đúng.

Có hỗ trợ biểu thức 6 trường của Quartz không?

Không. Công cụ dùng 5 trường của Linux cron, không nhận giây, ?, L, W, # hoặc @reboot. Các bí danh @hourly, @daily, @weekly, @monthly@yearly được đổi thành 5 trường.

Vì sao lịch đúng cú pháp nhưng không có ngày chạy?

Ngày 31 tháng 2 không tồn tại nên không có kết quả. Công cụ tìm trong 8 năm tới; lịch chỉ chạy vào ngày nhuận có thể có ít hơn 5 lần. */5 cũng là bước trong từng giờ, không phải 5 phút tính từ lúc lưu.

Tài liệu crontab chính thức của Cronie (tiếng Anh)