Cách xây dựng biểu thức cron

· 4 phút đọc

Biểu thức cron là cách tiêu chuẩn để xác định các lịch trình lặp lại trên Linux, các nền tảng đám mây, đường ống CI/CD và các bộ lập lịch tác vụ. Cú pháp nhỏ gọn nhưng không trực quan — một trình tạo trực quan cho bạn biết chính xác khi nào tác vụ của bạn sẽ chạy.

Cú pháp cron

Một biểu thức cron có 5 trường:

┌───────────── phút (0-59)
│ ┌───────────── giờ (0-23)
│ │ ┌───────────── ngày trong tháng (1-31)
│ │ │ ┌───────────── tháng (1-12)
│ │ │ │ ┌───────────── ngày trong tuần (0-6, chủ nhật=0)
│ │ │ │ │
* * * * *

Lịch trình cron phổ biến

Lịch trình Biểu thức Ý nghĩa
Mỗi phút * * * * * Chạy mỗi 60 giây
Mỗi 5 phút */5 * * * * Tại :00, :05, :10, :15...
Mỗi giờ 0 * * * * Vào đầu mỗi giờ
Mỗi ngày lúc nửa đêm 0 0 * * * Một lần mỗi ngày lúc 00:00
Mỗi ngày lúc 9 giờ sáng 0 9 * * * Một lần mỗi ngày lúc 09:00
Mỗi thứ Hai lúc 8 giờ sáng 0 8 * * 1 Hàng tuần vào thứ Hai
Ngày 1 mỗi tháng 0 0 1 * * Hàng tháng lúc nửa đêm ngày 1
Các ngày trong tuần lúc 6 giờ chiều 0 18 * * 1-5 Từ thứ Hai đến thứ Sáu

Cách xây dựng biểu thức cron

  1. Xác định lịch trình của bạn — sử dụng các điều khiển trực quan để chọn các giá trị phút, giờ, ngày, tháng và ngày trong tuần. Hoặc bắt đầu từ một mẫu sẵn như « mỗi giờ » hoặc « mỗi ngày lúc nửa đêm ».
  2. Xem trước các lần thực thi — trình tạo hiển thị 5 lần thực thi tiếp theo để xác minh rằng lịch trình là chính xác.
  3. Sao chép biểu thức — dán nó vào crontab của bạn, cấu hình CI/CD hoặc bộ lập lịch đám mây.

Ký tự đặc biệt

Ký tự Ý nghĩa Ví dụ
* Mọi giá trị * * * * * = mỗi phút
*/n Mỗi n */15 * * * * = mỗi 15 phút
, Nhiều giá trị 0 8,12,18 * * * = 8 giờ, trưa, 18 giờ
- Phạm vi 0 9-17 * * * = mỗi giờ từ 9 đến 17 giờ

Mẹo

Câu hỏi thường gặp

Định dạng của một biểu thức cron là gì?

Một biểu thức cron tiêu chuẩn có 5 trường được phân tách bằng khoảng trắng, đại diện cho phút (0-59), giờ (0-23), ngày trong tháng (1-31), tháng (1-12) và ngày trong tuần (0-6, trong đó 0 là chủ nhật). Một dấu hoa thị (*) có nghĩa là « mỗi » giá trị cho trường này.

*/5 trong cron có nghĩa là gì?

Cú pháp */5 có nghĩa là « mỗi 5 ». Trong trường phút, */5 có nghĩa là mỗi 5 phút (0, 5, 10, 15...). Trong trường giờ, */5 có nghĩa là mỗi 5 giờ. Nó hoạt động trong bất kỳ trường nào.

Biểu thức cron có giống nhau trên tất cả các nền tảng không?

Định dạng 5 trường là tiêu chuẩn trên Linux cron, AWS EventBridge, GitHub Actions và hầu hết các hệ thống lập lịch. Một số nền tảng thêm trường thứ 6 cho giây hoặc năm. Tham khảo tài liệu của nền tảng của bạn.

Làm thế nào để lập lịch cho ngày cuối cùng của mỗi tháng?

Cron tiêu chuẩn không có từ khóa « ngày cuối cùng ». Sử dụng một giải pháp thay thế như chạy hàng ngày với kiểm tra ngày trong tập lệnh của bạn, hoặc sử dụng các phần mở rộng dành riêng cho nền tảng (AWS EventBridge hỗ trợ L cho « last »).