Cách sử dụng
- Nhập hoặc dán biểu thức cron, hoặc chọn một lịch chạy phổ biến.
- Đọc ý nghĩa bằng ngôn ngữ thông thường. Trường không hợp lệ sẽ được nêu kèm lý do.
- Kiểm tra 10 lần chạy tiếp theo theo múi giờ địa phương. Chuyển sang UTC nếu máy chủ của bạn dùng UTC.
- Sao chép thời gian chạy để chia sẻ hoặc chỉnh sửa biểu thức cho đến khi có lịch chạy phù hợp.
Cách hoạt động
Biểu thức cron tiêu chuẩn, được dùng trong crontab trên Linux (Vixie cron và cronie) cũng như nhiều bộ lập lịch CI và dịch vụ lưu trữ, gồm 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) và ngày trong tuần (0–7 hoặc SUN–SAT, trong đó cả 0 và 7 đều là Chủ nhật). Mỗi trường chấp nhận * để chỉ mọi giá trị, một giá trị đơn, một khoảng như 1-5, một danh sách như 1,15,30 và một bước như */15 (mỗi 15 giá trị) hoặc 9-17/2 (cách 2 giờ, từ 9 đến 17). Tên không phân biệt chữ hoa chữ thường. Các bí danh @yearly (hoặc @annually), @monthly, @weekly, @daily (hoặc @midnight) và @hourly tương ứng với 0 0 1 1 *, 0 0 1 * *, 0 0 * * 0, 0 0 * * * và 0 * * * *.
Trường ngày trong tháng và ngày trong tuần tuân theo một quy tắc khiến nhiều người bất ngờ. Nếu một trong hai trường bắt đầu bằng *, ngày phải thỏa mãn cả hai trường. Nếu cả hai trường đều bị giới hạn, ngày được khớp khi thỏa mãn một trong hai: 0 0 13 * 5 chạy vào ngày 13 hằng tháng và cả mỗi thứ Sáu, chứ không chỉ vào thứ Sáu ngày 13. Vì cách kiểm tra dựa trên việc trường có bắt đầu bằng * hay không, bước như */2 cũng được xem là không giới hạn. Cách xử lý này tương thích với Vixie cron và cronie; một số bộ lập lịch khác hoạt động khác đi.
Thời gian chạy tiếp theo được tính theo múi giờ của trình duyệt hoặc theo UTC, múi giờ được hầu hết máy chủ và bộ lập lịch đám mây sử dụng. Bản thân cron dùng múi giờ của máy đang chạy. Cách các cron daemon thực xử lý thời điểm chuyển đổi giờ mùa hè có khác biệt; công cụ này bỏ qua các giờ địa phương không tồn tại khi đồng hồ chuyển tới và chỉ liệt kê một lần đối với giờ bị lặp lại. Công cụ không hỗ trợ cú pháp mở rộng: biểu thức Quartz gồm sáu hoặc bảy trường có giây hoặc năm, cũng như các ký tự đặc biệt ?, L, W và #.
Ví dụ
Kiểm tra tình trạng trong giờ làm việc
*/15 9-17 * * 1-5 nghĩa là cứ 15 phút một lần, trong khoảng 09:00–17:59 từ thứ Hai đến thứ Sáu. Lần chạy cuối mỗi ngày là lúc 17:45.
Sao lưu hằng đêm
30 2 * * * chạy lúc 02:30 mỗi ngày. Nếu máy chủ dùng UTC còn bạn ở New York, danh sách lần chạy tiếp theo ở chế độ UTC sẽ hiển thị thời gian máy chủ thực sự sử dụng.
Bẫy trường ngày
0 9 1 * 1 trông có vẻ nghĩa là “9:00 ngày đầu tháng nếu đó là thứ Hai”, nhưng thực tế chạy lúc 09:00 vào ngày 1 hằng tháng và cả mỗi thứ Hai. Để chỉ chạy vào thứ Hai đầu tiên, hãy lên lịch 0 9 1-7 * * và kiểm tra ngày trong tuần bên trong tập lệnh.
Câu hỏi thường gặp
*/5 trong cron có nghĩa là gì?
Nghĩa là cứ mỗi 5 giá trị của trường, bắt đầu từ giá trị nhỏ nhất. Trong trường phút, */5 chạy vào các phút 0, 5, 10 … 55. Trong trường giờ, */5 chạy lúc 0, 5, 10, 15 và 20, nên khoảng cách từ 20:00 đến nửa đêm là bốn giờ, không phải năm giờ.
Vì sao tác vụ chạy vào nhiều ngày hơn tôi dự kiến?
Khi cả trường ngày trong tháng và ngày trong tuần đều bị giới hạn, cron chạy vào những ngày khớp với một trong hai trường. Ví dụ, 0 0 15 * 1 chạy vào ngày 15 và mỗi thứ Hai. Đặt một trong hai trường thành * để chỉ yêu cầu trường còn lại khớp.
Cron sử dụng múi giờ nào?
Cron dùng múi giờ hệ thống của máy chủ chạy cron daemon, trừ khi crontab đặt CRON_TZ hoặc TZ (được cronie hỗ trợ). Bộ lập lịch đám mây thường mặc định dùng UTC. Bật tùy chọn UTC để xem thời gian máy chủ dùng UTC sẽ sử dụng.
Tôi có thể dùng giây hoặc trường năm không?
Không dùng được trong cron tiêu chuẩn, vốn có độ phân giải một phút và năm trường. Định dạng sáu hoặc bảy trường có giây và năm thuộc về Quartz, Spring và các thư viện tương tự, công cụ này không hỗ trợ.
Chủ nhật là 0 hay 7?
Cả hai đều được. Trong trường ngày trong tuần, 0 và 7 đều có nghĩa là Chủ nhật, 1 là thứ Hai và 6 là thứ Bảy. Bạn cũng có thể dùng tên viết tắt ba chữ cái từ SUN đến SAT.
Quyền riêng tư
Biểu thức được phân tích và thời gian chạy được tính trong trình duyệt. Nội dung bạn nhập không được tải lên, lưu trữ hay đưa vào dữ liệu phân tích.