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ế
- 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.
- 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.
- 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.
- Đố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–DEC và SUN–SAT trong biểu thức thay vì tên tháng, thứ bằng tiếng Việt.
| Trường | Giá trị |
|---|---|
| Phút | 0–59 |
| Giờ | 0–23 |
| Ngày trong tháng | 1–31 |
| Tháng | 1–12 |
| Thứ | 0–7 |
- * 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ức | Lịch chạy |
|---|---|
*/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 |
0 0 * * 0 | Chủ 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.shGiả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 và @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.
