Cron là một dịch vụ lập kế hoạch công việc dựa trên thời gian được tìm thấy trong các hệ điều hành giống Unix. Người dùng lên lịch các công việc (lệnh hoặc tập lệnh) để chạy định kỳ vào những thời điểm, ngày hoặc khoảng thời gian cố định.
Nguồn gốc và lịch sử ban đầu của Cron
Việc triển khai cron đầu tiên bắt nguồn từ Phiên bản 7 Unix. Thuật ngữ “cron” xuất phát từ tiếng Hy Lạp có nghĩa là thời gian, “chronos”. Phiên bản Unix này, được phát hành năm 1979, có một chương trình cron đơn giản thực thi các tác vụ theo những khoảng thời gian nhất định. Chức năng của Cron sau đó được Paul Vixie mở rộng vào năm 1987. Phiên bản này, được gọi là Vixie Cron, là phiên bản được cài đặt phổ biến nhất hiện nay và là phiên bản thường được nhắc đến khi mọi người nhắc đến “Cron”.
Mở rộng khái niệm về Cron
Cron cho phép người dùng tự động hóa việc bảo trì hoặc quản trị hệ thống—mặc dù bản chất mục đích chung của nó khiến nó hữu ích cho những việc như tải xuống tệp từ Internet và tải xuống email đều đặn. Môi trường cron giống như một hộp cát trong đó các công việc định kỳ chạy ra khỏi môi trường shell thông thường.
Mỗi người dùng có thể có crontab của riêng mình và mặc dù đây là các tệp trong /var/spool/ nhưng chúng không có ý định chỉnh sửa trực tiếp. Cú pháp của biểu thức cron có thể được chia thành hai loại cú pháp chính: cú pháp cron Unix và cú pháp phức tạp hơn được gọi là cú pháp biểu thức cron hoặc cú pháp cron thạch anh.
Cấu trúc bên trong của Cron và cách thức hoạt động
Cron hoạt động trên cơ sở tệp cấu hình đơn giản nhưng mạnh mẽ được gọi là tệp “crontab”. Tệp này chứa một dòng cho mỗi tác vụ sẽ được chạy, bao gồm năm trường ngày và giờ, theo sau là một lệnh sẽ được chạy vào những thời điểm được chỉ định.
Năm trường đại diện cho:
- Phút sau giờ (0 – 59)
- Số giờ trong một ngày (0 – 23)
- Ngày trong một tháng (1 – 31)
- Các tháng trong một năm (1 – 12)
- Các ngày trong tuần (0 – 7, trong đó 0 và 7 là Chủ Nhật)
Trường lệnh chứa tác vụ sẽ được chạy vào thời điểm được chỉ định trong năm trường đầu tiên.
Các tính năng chính của Cron
Các tính năng chính của Cron bao gồm:
- Nó cho phép các tác vụ chạy tự động ở chế độ nền đều đặn.
- Nó cung cấp một nền tảng linh hoạt để lên lịch các tác vụ (tập lệnh hoặc lệnh) với nhiều đơn vị thời gian khác nhau.
- Mỗi người dùng có thể có tệp crontab của riêng mình.
- Các công việc định kỳ có thể được lên lịch để chạy theo phút, giờ, ngày trong tuần, ngày trong tháng và tháng trong năm.
- Cron cung cấp một cách đơn giản và hiệu quả để tự động hóa các tác vụ hệ thống khác nhau.
Các loại Cron
Công việc định kỳ có thể được phân loại chung như sau:
Kiểu | Sự miêu tả |
---|---|
Khởi động lại | Chạy một lần khi khởi động. |
Anacron | Chạy theo khoảng thời gian được chỉ định trong ngày. |
Cron hệ thống | Được lưu trữ trong /etc/crontab và trong thư mục /etc/cron.d/, chúng được dùng trên toàn hệ thống. |
Cron người dùng | Mỗi người dùng có thể có cái riêng của mình và chúng được lưu trữ trong /var/spool/cron/crontabs/. |
Cách sử dụng Cron, các vấn đề và giải pháp của chúng
Cron rất hữu ích trong việc tự động hóa các tác vụ, nhưng nó có thể dẫn đến nhiều vấn đề nếu không được sử dụng cẩn thận. Ví dụ: cron job bị định cấu hình sai có thể dẫn đến mức sử dụng CPU cao. Ngoài ra, cron chỉ gửi email kết quả công việc của nó, nếu có, cho người dùng mà nó chạy các công việc đó. Điều này có thể gây ra sai sót nếu không được kiểm tra thường xuyên.
Các giải pháp chung cho những vấn đề này bao gồm:
- Thường xuyên kiểm tra mức sử dụng CPU cao và cấu hình lại hoặc dừng các công việc không cần thiết.
- Đảm bảo tất cả các lệnh và tập lệnh chạy chính xác trước khi đặt chúng làm công việc định kỳ.
- Chuyển hướng đầu ra sang tệp nhật ký hoặc thiết lập máy chủ thư để giám sát các công việc định kỳ hiệu quả hơn.
So sánh với các công cụ tương tự
Có các công cụ lập lịch tác vụ khác tương tự như cron, chẳng hạn như bộ định thời anacron và systemd. Sự khác biệt chính giữa những điều này có thể được tóm tắt là:
Dụng cụ | Sự miêu tả |
---|---|
cron | Thích hợp cho các nhiệm vụ được thực hiện vào những thời điểm cụ thể trong ngày. Không chạy các công việc bị bỏ lỡ. |
Anacron | Thích hợp cho các nhiệm vụ được chạy một lần mỗi ngày/tuần/tháng. Sẽ chạy các công việc bị bỏ lỡ khi máy trực tuyến trở lại. |
hệ thống | Thích hợp cho các tình huống phức tạp hơn vì nó cung cấp nhiều tùy chọn hơn và tích hợp tốt với các bản phân phối Linux hiện đại. |
Viễn cảnh tương lai và các công nghệ liên quan
Khi các hệ thống dựa trên Unix tiếp tục phát triển, Cron cũng vậy. Bất chấp sự xuất hiện của các công cụ lập lịch tác vụ nâng cao hơn như systemd, tính đơn giản và sức mạnh của Cron đảm bảo rằng nó vẫn được sử dụng phổ biến cho đến ngày nay.
Xu hướng gần đây hướng tới các ứng dụng được đóng gói và kiến trúc microservice cũng đã mang lại những cách sử dụng Cron mới. Ví dụ: Kubernetes, một nền tảng điều phối vùng chứa phổ biến, có một tính năng được gọi là CronJobs, gần giống với Cron trong các hệ thống dựa trên Unix.
Máy chủ proxy và Cron
Máy chủ proxy có thể được sử dụng hiệu quả khi kết hợp với Cron để tự động hóa một số tác vụ nhất định. Ví dụ: nếu bạn có một tập lệnh cần truy cập thường xuyên vào trang web hoặc API thông qua máy chủ proxy, bạn có thể thiết lập một công việc định kỳ để chạy tập lệnh đó theo các khoảng thời gian được chỉ định.
Cron cũng có thể được sử dụng để xoay proxy theo các khoảng thời gian được chỉ định, giảm khả năng bất kỳ proxy nào bị chặn. Ví dụ: các dịch vụ proxy của OneProxy có thể được tự động hóa bằng Cron cho các tác vụ như thu thập dữ liệu, tự động hóa các tác vụ truyền thông xã hội, v.v.
Liên kết liên quan
Để biết thêm thông tin về Cron, hãy xem xét các tài nguyên sau: