Hiểu và sử dụng Cron: Hướng dẫn toàn diện để lên lịch công việc
cron, viết tắt của lệnh chạy trực tuyến, là một công cụ lập lịch công việc dựa trên thời gian mạnh mẽ trong các hệ điều hành giống Unix. Thuật ngữ cron là một cách chơi chữ Kronos or chronos, trong thần thoại Hy Lạp đại diện cho thời gian. Tên cron của bộ lập lịch công việc dựa trên thời gian phản ánh chức năng lập lịch và thực hiện các nhiệm vụ của nó vào những thời điểm hoặc khoảng thời gian cụ thể, khiến nó trở thành một tham chiếu phù hợp với khái niệm thời gian trong thần thoại.
Cron cho phép bạn tự động hóa các tác vụ lặp đi lặp lại, thực thi các tập lệnh theo các khoảng thời gian cụ thể và duy trì hiệu quả của hệ thống. Hướng dẫn toàn diện này sẽ hướng dẫn bạn mọi thứ bạn cần biết về cron, từ cài đặt đến cách sử dụng, từ vựng chính và mẫu mã thực.
Mục lục
- cron là gì?
- Cài đặt Cron
- Các khái niệm và thuật ngữ cơ bản
- Cú pháp Cron
- Ví dụ và trường hợp sử dụng
- Những cạm bẫy phổ biến và cách thực hành tốt nhất
- Tài nguyên cron bổ sung
Cron là gì?
Cron là một daemon (tiến trình nền) chạy trên các hệ thống dựa trên Unix, bao gồm Linux và macOS. Mục đích chính của nó là thực hiện các nhiệm vụ theo lịch trình một cách tự động. Các tác vụ này có thể bao gồm từ các tập lệnh đơn giản đến bảo trì và sao lưu hệ thống.
Cài đặt Cron
Trong hầu hết các hệ thống giống Unix, cron được cài đặt sẵn. Bạn có thể kiểm tra tính khả dụng của nó bằng cách mở một thiết bị đầu cuối và gõ:
crontab -e
Nếu lệnh này mở trình soạn thảo bảng cron thì bạn đã cài đặt cron. Nếu không, bạn có thể cài đặt nó bằng trình quản lý gói của hệ thống. Ví dụ: trên Ubuntu, bạn có thể sử dụng:
sudo apt-get install cron
Khái niệm và thuật ngữ Cron
Trước khi đi sâu vào cách sử dụng cron, hãy tìm hiểu một số khái niệm và thuật ngữ cơ bản:
- crontab: Viết tắt của bảng cron, đó là một tệp chứa danh sách các tác vụ đã lên lịch cho người dùng.
- Công việc lương thấp: Một tác vụ hoặc lệnh duy nhất được lên lịch để chạy vào một thời điểm cụ thể.
- Lĩnh vực: Mỗi cronjob có năm trường xác định thời điểm công việc chạy:
- Phút (0-59)
- Giờ (0-23)
- Ngày trong tháng (1-31)
- Tháng (1-12)
- Ngày trong tuần (0-7, trong đó cả 0 và 7 tượng trưng cho Chủ nhật)
Cú pháp Cron
Hiểu cú pháp của mục nhập crontab là rất quan trọng. Nó theo mô hình:
* * * * * command-to-be-executed
Đây là lời giải thích được nhận xét mà bạn có thể chèn vào công việc định kỳ của mình:
# +---------------- minute (0 - 59)
# | +------------- hour (0 - 23)
# | | +---------- day of month (1 - 31)
# | | | +------- month (1 - 12)
# | | | | +---- day of week (0 - 6) (Sunday=0 or 7)
# | | | | |
* * * * * /var/www/html/myscript.php
Mỗi dấu hoa thị (*) đại diện cho một trường trong biểu thức cron. Ví dụ: để lên lịch công việc hàng ngày vào lúc 3:30 chiều, bạn sẽ sử dụng:
30 15 * * * command-to-be-executed
Ví dụ về Cron và trường hợp sử dụng
Hãy cùng khám phá một số ví dụ thực tế để minh họa việc sử dụng cron:
- Chạy tập lệnh hàng ngày: Để thực thi tập lệnh hàng ngày vào lúc nửa đêm, bạn có thể sử dụng:
0 0 * * * /path/to/script.sh
- Chạy tập lệnh mỗi giờ: Đối với nhiệm vụ hàng giờ, hãy sử dụng:
0 * * * * /path/to/script.sh
- Sao lưu hàng tuần: Để lên lịch sao lưu hàng tuần vào lúc 2 giờ sáng Chủ nhật, hãy sử dụng:
0 2 * * 0 /path/to/backup-script.sh
- Chạy một nhiệm vụ vào các tháng cụ thể: Chỉ chạy một công việc vào tháng 8 và tháng 30 lúc XNUMX:XNUMX sáng:
30 8 * 1,7 * /path/to/script.sh
Những cạm bẫy của Cron và các phương pháp hay nhất
- Biến môi trường: Đảm bảo rằng các lệnh cron của bạn thiết lập các biến môi trường cần thiết, vì các lệnh cron không kế thừa các biến môi trường của shell của bạn.
- Quyền: Hãy chắc chắn rằng bạn đặt quyền cho tệp tập lệnh của mình dưới dạng có thể thực thi được. Mỗi lần tôi lưu lại tập lệnh của mình, tôi lại thấy các quyền của mình cần được đặt lại!
- Biến đường dẫn: Chỉ định đường dẫn đầy đủ đến các tệp thực thi và tập lệnh trong công việc định kỳ của bạn để tránh các sự cố với đường dẫn tương đối.
- Kiểm tra: Kiểm tra chúng trong môi trường an toàn trước khi thiết lập các công việc định kỳ quan trọng để đảm bảo chúng hoạt động như mong đợi.
- Logging: Chuyển hướng đầu ra của các công việc định kỳ của bạn sang một tệp nhật ký để theo dõi việc thực hiện chúng và bất kỳ lỗi tiềm ẩn nào.
0 0 * * * /path/to/script.sh >> /path/to/cron.log 2>&1
Công việc định kỳ này chạy một tập lệnh /path/to/script.sh
mỗi ngày vào lúc nửa đêm và đầu ra (cả thiết bị xuất chuẩn và thiết bị xuất chuẩn) do tập lệnh tạo ra sẽ được thêm vào tệp nhật ký
/path/to/cron.log
. Đây là phương pháp phổ biến để nắm bắt và ghi nhật ký đầu ra của các công việc định kỳ nhằm mục đích giám sát và khắc phục sự cố. Hãy chia nhỏ cú pháp cron job cụ thể này:
- *0 0 * * *: Phần này xác định lịch trình khi nào cron job sẽ chạy. Trong trường hợp này, nó được lên lịch chạy vào lúc nửa đêm hàng ngày (0 phút qua 0 giờ).
- /path/to/script.sh: Đây là lệnh hoặc script để thực thi khi cron job chạy. Ví dụ này hiển thị một tập lệnh nằm ở
/path/to/script.sh
. - >> /path/to/cron.log: Phần này chuyển hướng đầu ra tiêu chuẩn (stdout) của cron job sang tệp nhật ký có tên
cron.log
Đặt vị trí tại/path/to/
. Các>>
toán tử sẽ thêm đầu ra vào tệp nhật ký, vì vậy nếu tệp không tồn tại, nó sẽ được tạo và nếu nó đã tồn tại, đầu ra sẽ được thêm vào cuối tệp. - 2> & 1: Điều này được sử dụng để chuyển hướng cả đầu ra tiêu chuẩn (thiết bị xuất chuẩn) và lỗi tiêu chuẩn (stderr) sang cùng một tệp nhật ký. Các
2
đại diện cho stderr và1
đại diện cho thiết bị xuất chuẩn. Vì thế,2>&1
có nghĩa là cả stdout và stderr đều được chuyển hướng đến cùng một tệp nhật ký được chỉ định trước đó.
Cron là một công cụ có giá trị để tự động hóa các tác vụ trên hệ thống dựa trên Unix. Với các tùy chọn lập lịch linh hoạt, nó có thể đơn giản hóa việc quản trị hệ thống và nâng cao hiệu quả. Bằng cách hiểu cú pháp của nó và làm theo các phương pháp hay nhất, bạn có thể khai thác sức mạnh của cron để tự động hóa các tác vụ thường ngày của mình một cách hiệu quả.
Tài nguyên Cron bổ sung
- Trình nền Unix - Dean Wilson