Lập lịch tác vụ định kỳ bằng Cron trong Linux
cron
là một chương trình Linux được sử dụng để lên lịch cho một lệnh hoặc một tập lệnh được thực thi vào thời điểm sau đó. Nó cũng có thể được sử dụng để lập lịch chạy các lệnh và tập lệnh định kỳ. Các chương trình được lập lịch sử dụng cron thường được gọi là Việc làm Cron. Việc sử dụng chính của nó là cho các tác vụ Quản trị hệ thống như sao lưu thường xuyên, cập nhật phần mềm thường xuyên và các tác vụ bảo trì tương tự khác.
Giới thiệu
cron
chạy như một trình nền trong Linux, tức là, như một quy trình nền. Nó cho phép người dùng lên lịch công việc trực tiếp bằng lệnh crontab, lệnh này sẽ mở một tệp cấu hình có tên là Cron File trong một trình soạn thảo. Tệp Cron riêng biệt được tạo cho mỗi người dùng.
Tạo tệp Cron và cú pháp cơ bản
Các crontab
lệnh có thể được thực hiện với -e
cờ để chỉnh sửa Tệp Cron hiện có. Nếu tệp chưa tồn tại, nó sẽ được tạo. Nếu người dùng gọi lệnh lần đầu tiên và nếu có nhiều trình chỉnh sửa tệp được cài đặt trên hệ thống Linux, lệnh sẽ yêu cầu người dùng chọn trình chỉnh sửa mặc định từ danh sách trình chỉnh sửa.
Sau khi chọn trình chỉnh sửa, một tệp cron cho người dùng sẽ được tạo và mở. Bây giờ bạn có thể chỉ định công việc trong tệp.
Cú pháp chung để chỉ định một Công việc Cron là:
Về cơ bản, sẽ 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, Đối với Chủ nhật, có thể sử dụng 0 hoặc 7) trong Công việc Cron. Để đơn giản hóa, hãy lấy một ví dụ:
1 2 3 4 5 echo "Xin chào"
Điều này có nghĩa là lệnh echo "Xin chào"
sẽ chạy vào tất cả các ngày thứ năm trong tuần (thứ sáu) và ngày thứ ba hàng tháng, vào tháng thứ tư hàng năm (tháng tư), lúc 02:01 (giờ thứ 2 phút đầu tiên).
Nếu cùng một lệnh được chạy hàng ngày lúc 02:01, thì cú pháp sẽ như sau:
1 2 * * * echo "Xin chào"
Các *
biểu thị "luôn luôn" hoặc "cho tất cả", ví dụ: cho tất cả các tháng, cho tất cả các ngày trong tuần, v.v.
Toán tử lệnh (,
) có thể được sử dụng để nhập danh sách các giá trị khi tác vụ cần được lặp lại. Ví dụ:
0 2,3,4 * * * echo "Xin chào"
Điều này sẽ chạy chương trình vào lúc 2 giờ sáng, 3 giờ sáng và 4 giờ sáng, mỗi ngày.
Tương tự, dấu gạch ngang (-
) nhà điều hành có thể được sử dụng để chỉ định một phạm vi mà nhiệm vụ sẽ lặp lại. Ví dụ:
0-20 2 * * * echo "Xin chào"
Thao tác này sẽ chạy chương trình lúc 02:00, 02:01, 02:02, v.v. cho đến 02:20.
Cuối cùng, chúng tôi có dấu gạch chéo ( /
) nhà điều hành. Toán tử này được sử dụng để chỉ định một giá trị khoảng thời gian mà tác vụ sẽ được lặp lại theo đó. Ví dụ. */15
trong trường phút có nghĩa là nhiệm vụ phải được lặp lại sau mỗi 15 phút. 2-10/2
trong trường giờ chỉ định rằng nhiệm vụ sẽ lặp lại từ 2 giờ sáng đến 10 giờ sáng sau mỗi khoảng thời gian 2 giờ (2 giờ sáng, 4 giờ sáng, 6 giờ sáng, 8 giờ sáng, 10 giờ sáng).
* / 15 2-10 / 2 * * * echo "Xin chào"
Sau khi bạn đã thực hiện mục nhập trong Tệp Cron, hãy lưu tệp và thoát khỏi trình chỉnh sửa.
Bạn sẽ thấy một 'Cài đặt crontab mới' trong terminal sau khi lưu và thoát khỏi tệp crontab.
Macro
Một số macro nhất định được xác định trước trong Cron, chỉ định một số khoảng thời gian thường được yêu cầu, chẳng hạn như mỗi giờ, mỗi ngày, mỗi tháng, v.v.
Để chạy một tác vụ mỗi ngày một lần vào đầu ngày, tức là lúc 00:00, hãy sử dụng macro @hằng ngày
. Điều này tương đương với 0 0 * * *
.
Bạn có thể đặt điều này vào tệp Cron theo cách tương tự như đã mô tả trước đây.
Theo cách tương tự, các macro khác có thể được sử dụng, viz. @hourly
(Phút 0 của mỗi giờ), @monthly
(00:00 ngày đầu tiên của tháng), @weekly
(00:00 ngày đầu tuần, @yearly
(00:00 ngày 1 tháng 1 hàng năm), @reboot
(vào mỗi lần khởi động máy tính).
Sự kết luận
Trong bài viết này, chúng ta đã học cách thêm Cron Jobs để thực thi thông thường trong Linux. Việc sử dụng Cron Jobs đúng cách có ích cho cả những tác vụ thủ công khó khăn nhất mà người dùng phải đối mặt, Ví dụ: thường xuyên xóa nhật ký cũ, lưu trữ tất cả các loại dữ liệu lạnh (dữ liệu hiếm khi được truy cập), v.v.