Lệnh crontab - Công việc định kỳ
Môi trường: CentOS
Bằng lệnh crontab
, chúng ta có thể thực hiện các lệnh hệ thống hoặc các tập lệnh shell script cụ thể vào các khoảng thời gian cố định. Đơn vị thời gian có thể là phút, giờ, ngày, tháng, tuần và bất kỳ sự kết hợp nào của chúng. Lệnh này rất hữu ích cho các công việc định kỳ như phân tích nhật ký hoặc sao lưu dữ liệu.
Dịch vụ crond
Linux sử dụng dịch vụ crond để hỗ trợ crontab.
Kiểm tra dịch vụ crond
Sử dụng lệnh systemctl list-unit-files
để kiểm tra xem dịch vụ crond
đã được cài đặt chưa.
Nếu trạng thái là enabled, có nghĩa là dịch vụ đang chạy.
Lệnh dịch vụ crond
Khởi động dịch vụ crond tự động khi khởi động hệ thống: chkconfig crond on
Hoặc, bạn có thể khởi động thủ công bằng các lệnh sau:
Lệnh crontab
Lệnh crontab
Cú pháp lệnh crontab như sau:
Giải thích:
-u user
: Để đặt dịch vụ crontab cho một người dùng cụ thể.file
: file là tên tệp lệnh, đại diện cho danh sách công việc crontab và tải chúng vào crontab. Nếu không chỉ định tệp này trong dòng lệnh, lệnh crontab sẽ lấy lệnh từ đầu vào tiêu chuẩn (bàn phím) và tải chúng vào crontab.-e
: Chỉnh sửa nội dung tệp crontab của một người dùng cụ thể. Nếu không chỉ định người dùng, nó sẽ chỉnh sửa tệp crontab của người dùng hiện tại.-l
: Hiển thị nội dung tệp crontab của một người dùng cụ thể. Nếu không chỉ định người dùng, nó sẽ hiển thị nội dung tệp crontab của người dùng hiện tại.-r
: Xóa tệp crontab của một người dùng cụ thể từ thư mục/var/spool/cron
. Nếu không chỉ định người dùng, nó sẽ xóa tệp crontab của người dùng hiện tại.-i
: Hiển thị thông báo xác nhận khi xóa tệp crontab của người dùng.
Có hai cách để thêm công việc định kỳ:
- Nhập
crontab -e
và thêm công việc tương ứng, sau đó lưu và thoát. - Chỉnh sửa trực tiếp tệp
/etc/crontab
, tức làvi /etc/crontab
, và thêm công việc tương ứng.
Tệp crontab
Các công việc crontab cần thực hiện được lưu trong tệp /etc/crontab
.
Định dạng tệp crontab như sau:
Các trường chuẩn
Dấu phẩy được sử dụng để phân tách danh sách. Ví dụ, trong trường thứ 5 (thứ trong tuần), sử dụng MON,WED,FRI
để chỉ thứ Hai, thứ Tư và thứ Sáu.
Dấu gạch ngang được sử dụng để xác định phạm vi. Ví dụ, 2000-2010
đại diện cho mỗi năm trong khoảng từ năm 2000 đến năm 2010, bao gồm cả năm 2000 và năm 2010.
Ký tự percent (%) trong lệnh sẽ được thay thế bằng ký tự xuống dòng, tất cả dữ liệu sau ký tự percent đầu tiên sẽ được gửi như đầu vào tiêu chuẩn cho lệnh.
Trường | Bắt buộc | Giá trị cho phép | Ký tự đặc biệt cho phép |
---|---|---|---|
Phút | Có | 0–59 | * ,- |
Giờ | Có | 0–23 | * ,- |
Ngày trong tháng | Có | 1–31 | * ,- |
Tháng | Có | 1–12 hoặc JAN–DEC | * ,- |
Ngày trong tuần | Có | 0–6 hoặc SUN–SAT | * ,- |
Ví dụ tệp /etc/crontab
: