Crontab là một công cụ Linux quan trọng để lập lịch các tác vụ để những chương trình và script có thể được thực thi tại một thời điểm cụ thể. Bài viết này sẽ hướng dẫn bạn cách lên lịch công việc trong Debian 12 và cho bạn xem một số ví dụ. Các lệnh tương tự cũng sẽ hoạt động trên những phiên bản Debian cũ hơn.
Điều kiện tiên quyết
Bạn cần có quyền root trước khi tiếp tục.
Cài đặt Cron và Crontab
Trên hệ thống Debian, cron được cài đặt theo mặc định. Tuy nhiên, nếu nó chưa được cài đặt trên máy của bạn, hãy chạy một số lệnh sau trên terminal với quyền root.
apt-get update
apt-get install cron
Để có danh sách các cron job đã được lên lịch trên máy của bạn, hãy thực hiện thao tác sau trên terminal.
crontab -l
Mở crontab bằng trình chỉnh sửa
Để mở crontab bằng trình chỉnh sửa, hãy thực thi lệnh sau với quyền root.
crontab -e
Ngay sau khi lệnh được thực thi, bạn sẽ được yêu cầu chọn trình chỉnh sửa như trong ảnh chụp màn hình sau.
Lệnh crontab -e mở crontab của người dùng hiện đang đăng nhập, đó là người dùng root trong ví dụ. Để mở crontab của người dùng khác, giả sử người dùng 'tom', hãy thêm flag -u theo sau là tên của người dùng. Ví dụ:
crontab -e -u tom
Cú pháp của crontab
Linux crontab có 6 trường như hình bên dưới.
* * * * * /path/to/script.sh
Mỗi trường có ý nghĩa sau.
[Phút] [giờ] [Ngày_trong_tháng] [Tháng_của_năm] [Ngày_trong_tuần] [lệnh]
- Phút 0 - 59
- Giờ 0 - 23
- Ngày trong tháng 1 - 31
- Tháng của năm 1 - 12
- Ngày trong tuần 0 - 7
Một số ví dụ cơ bản về cron job
Dưới đây là một số ví dụ về các cron job.
1. Lên lịch thực thi cron job vào lúc 2 giờ sáng hàng ngày
0 2 * * * /bin/sh backup.sh
Cron job ở trên sẽ được thực thi hàng ngày vào lúc 2 giờ sáng và sẽ chạy script backup.sh. Điều này sẽ duy trì bản sao lưu mỗi ngày.
2. Lên lịch thực thi cron job hai lần một ngày
0 5,17 * * * /scripts/script.sh
Cron job trên sẽ được thực hiện vào lúc 5 giờ sáng và 5 giờ chiều hàng ngày. Nhiều lần có thể được chỉ định với sự trợ giúp của dấu phẩy.
3. Lên lịch thực thi cron job mỗi phút
* * * * * scripts/script.sh
Công việc định kỳ ở trên sẽ được thực hiện mỗi phút.
4. Lên lịch thực thi cron job vào lúc 5 giờ chiều Chủ nhật hàng tuần
0 17 * * sun /scripts/script.sh
Cron job trên sẽ được thực hiện vào lúc 5 giờ chiều Chủ Nhật hàng tuần. Loại cron này rất hữu ích để thực hiện các tác vụ hàng tuần như xoay vòng nhật ký, v.v...
5. Lên lịch thực hiện cron job 10 phút một lần
Nếu bạn muốn công việc của mình được thực thi 10 phút một lần, cron cần được cập nhật như sau.
*/10 * * * * /scripts/monitor.sh
'*/10' có nghĩa là chạy 10 phút một lần.
6. Lên lịch thực thi cron job vào những tháng đã chọn
Giả sử bạn muốn thực thi một cron vào tháng 1, tháng 5 và tháng 8 thì cron job cần được thiết lập như sau.
* * * jan,may,aug * /script/script.sh
Một lần nữa, nhiều tháng có thể được chỉ định bằng dấu phẩy.
7. Lên lịch thực thi cron job vào những ngày đã chọn
Nếu bạn muốn cron job của mình được thực thi vào những ngày đã chọn, giả sử Chủ Nhật và Thứ Sáu lúc 5 giờ chiều, lệnh sẽ giống như sau.
0 17 * * sun,fri /script/script.sh
8. Lên lịch nhiều tác vụ trong một cron job
Nhiều script có thể được chạy trong một tác vụ như sau. Cả hai script phải được phân tách bằng dấu chấm phẩy.
* * * * * /scripts/script.sh; /scripts/scrit2.sh
9. Lên lịch chạy cron job 30 giây một lần
Để lên lịch cho một cron job thực thi cứ sau 30 giây, chúng ta cần thiết lập hai cron như sau:
* * * * * /scripts/script.sh * * * * * sleep 30; /scripts/script.sh
10. Lên lịch thực thi cron job hai lần vào Chủ Nhật và Thứ Hai hàng tuần
Nếu bạn muốn lên lịch thực thi một công việc hai lần vào lúc 4 giờ sáng và 5 giờ chiều vào Chủ Nhật và Thứ Hai hàng tuần, cronjob sẽ trông như thế này:
0 4,17 * * sun,mon /scripts/script.sh
Cả giờ và tuần trong ngày đều được phân tách bằng dấu phẩy.