Cron Schedule là gì?
Cron Schedule là chuỗi định dạng đặc biệt dùng để lập lịch chạy tự động các tác vụ theo thời gian xác định, thường theo cú pháp 5 trường: phút, giờ, ngày tháng, tháng, ngày tuần. Nó được sử dụng rộng rãi trong Unix/Linux, các nền tảng CI/CD như GitHub Actions, và công cụ automation như n8n để kích hoạt workflow định kỳ mà không cần can thiệp thủ công. Cron daemon (crond) kiểm tra lịch này mỗi phút để thực thi nhiệm vụ tương ứng.
Vai trò của Cron Schedule trong workflow
Cron Schedule đóng vai trò là trigger thời gian trong workflow, giúp tự động hóa các tác vụ lặp lại như backup dữ liệu, gửi báo cáo, hoặc quét bảo mật. Trong automation, nó thay thế trigger thủ công hoặc event-based, đảm bảo workflow chạy đúng giờ bất kể người dùng có online hay không. Ví dụ, trong GitHub Actions, Cron Schedule kích hoạt workflow trên nhánh default theo múi giờ GMT.
Cron Schedule hoạt động như thế nào?
Cron Schedule sử dụng định dạng phút giờ ngày_tháng tháng ngày_tuần, với các ký tự đặc biệt như * (mọi), / (bước nhảy), và danh sách 1,15.
Các ví dụ phổ biến bao gồm:
0 0 *: Chạy hàng ngày lúc nửa đêm GMT.0 9 1: Chạy thứ Hai lúc 9h sáng GMT.0 0 1,15: Chạy hai lần/tháng vào ngày 1 và 15 lúc nửa đêm.0 /6: Chạy mỗi 6 giờ.
Cron daemon đọc file crontab (tạo bằng crontab -e), kiểm tra mỗi phút, và thực thi lệnh nếu khớp thời gian hiện tại. Trong workflow hiện đại như Argo hay n8n, nó tích hợp trực tiếp vào YAML config mà không cần daemon riêng.
Những lưu ý quan trọng về Cron Schedule
Cron Schedule có một số đặc thù cần chú ý để tránh lỗi trong automation.
Đầu tiên, múi giờ thường mặc định GMT/UTC, nên kiểm tra và điều chỉnh nếu workflow cần giờ địa phương. Thứ hai, trong giờ cao điểm (đầu giờ), lịch có thể bị delay do tải cao. Thứ ba, thiết kế workflow idempotent để xử lý trường hợp chạy trùng lặp hiếm gặp.
Ngoài ra:
- Chỉ chạy trên nhánh default (như
main) trong GitHub Actions. - Sử dụng công cụ như crontab.guru để validate biểu thức trước khi áp dụng.
- Tránh lịch quá dày (dưới 1 phút) vì cron chỉ kiểm tra mỗi phút.
Các thuật ngữ liên quan đến Cron Schedule
Một số khái niệm thường đi kèm Cron Schedule trong automation bao gồm:
- Crontab: File cấu hình lưu trữ các lịch Cron Schedule cho user hoặc hệ thống.
- Cron Daemon (crond): Quy trình nền kiểm tra và thực thi lịch cron mỗi phút.
- Trigger: Cơ chế kích hoạt workflow, trong đó Cron Schedule là loại thời gian-based.
- Idempotency: Đặc tính workflow chạy nhiều lần mà không thay đổi kết quả, cần thiết cho cron.
Các câu hỏi thường gặp
Cron Schedule khác gì với Workflow Trigger thông thường?
Cron Schedule là trigger dựa trên thời gian cố định, khác với event trigger (như push code) chỉ chạy khi sự kiện xảy ra. Nó phù hợp cho tác vụ định kỳ, trong khi event trigger dùng cho phản ứng tức thì. Kết hợp cả hai giúp workflow linh hoạt hơn.
Làm sao để test Cron Schedule trong n8n hoặc GitHub Actions?
Sử dụng workflow_dispatch bên cạnh cron để trigger thủ công test lịch. Công cụ như crontab.guru giúp simulate thời gian chạy mà không chờ thực tế. Chạy local với crontab -e để kiểm tra nhanh trước khi deploy.
Điều gì xảy ra nếu Cron Schedule bị delay hoặc chạy trùng?
Delay thường do tải cao đầu giờ; thiết kế idempotent để chạy trùng không ảnh hưởng dữ liệu. Một số hệ thống skip job nếu quá hạn, tùy config. Luôn log output để debug.
Khi nào nên dùng Cron Schedule thay vì polling?
Dùng Cron Schedule cho lịch cố định để tiết kiệm tài nguyên, tránh polling liên tục tốn CPU. Polling phù hợp khi thời gian không dự đoán được, còn cron hiệu quả cho backup hoặc report hàng ngày. Chọn cron nếu khoảng cách >1 phút.