Computer >> Hướng Dẫn Máy Tính >  >> Điện Thoại Thông Minh >> Linux

Tăng năng suất Linux/Unix: Cách dùng crontab

Hướng dẫn chi tiết cách dùng lệnh crontab để lên lịch tác vụ trên Linux/Unix.

Ngoài game, một lợi thế lớn của máy tính là không ngại làm những việc nhàm chán, lặp lại mà chúng ta không muốn làm. Đối với tác vụ đơn điệu như sao lưu hàng ngày, tốt hơn là lên lịch chạy vào giờ nhất định mỗi ngày, và dùng thời gian cho việc thú vị hơn. Linux/Unix thường có sẵn tiện ích "crontab". Lệnh rất hữu ích này cho phép lên lịch tác vụ chạy tại thời điểm chỉ định và lặp lại theo cấu hình. Tác vụ được lên lịch bằng "crontab" gọi là "cron job".

Lệnh crontab cho phép chỉ định máy chủ thực thi script tại phút, giờ, ngày, tháng cụ thể. Để xem cron job đã cấu hình:

# crontab -l

Nếu có cron job sẽ hiển thị dạng:

0 6 * * * /opt/scripts/backup_script.sh

Cấu hình trên chạy script "backup_script" mỗi ngày lúc 6 giờ sáng. Dấu * nghĩa là chạy tại mọi giá trị của trường đó. Vì * ở các trường ngày, tháng, ngày trong tuần nghĩa là chạy mỗi ngày mỗi tháng mỗi tuần. Hai trường đầu nói crontab chạy lúc 0 phút, 6 giờ (6 AM). Cấu hình đọc như: "Chạy script /opt/scripts/backup_script.sh lúc 0 phút, 6 giờ, mỗi ngày, mỗi tháng, mỗi ngày trong tuần." Dưới đây là "cấu trúc" crontab:

0 6 * * * /opt/scripts/backup_script.sh
|  |  |  |  |
|  |  |  |  |________________ ngày trong tuần (Chủ nhật=0)
|  |  |  |__________________ tháng trong năm
|  |  |____________________ ngày trong tháng
|  |______________________ giờ trong ngày
|________________________ phút trong giờ

Để lên lịch mới hoặc sửa cron job cũ:

# crontab -e

Sẽ mở trình soạn thảo để thêm, sửa, xóa "cron job". Ví dụ chạy lúc 15:45 mỗi thứ Hai:

45 15 * * 1 /opt/scripts/script.sh

Có thể dùng dấu phẩy để nhiều giá trị trong một trường. Hữu ích nếu muốn chạy script 3 lần/ngày, cách nhau 8 giờ. Không để khoảng trắng giữa các giá trị trong cùng trường:

0 1,9,17 * 2,11 * /opt/scripts/db_backup_script.sh

Ví dụ trên chạy "db_backup_script.sh" lúc 1h, 9h, 17h mỗi ngày trong tháng 2 và 11. Crontab còn hiểu một số từ khóa tiếng Anh:

chuỗigiải thích
@rebootChạy một lần khi hệ thống khởi động lại
@yearlyChạy một lần/năm, đầu năm
@annuallyGiống @yearly
@monthlyChạy một lần/tháng, đầu tháng
@weeklyChạy một lần/tuần, đầu tuần
@dailyChạy một lần/ngày, lúc nửa đêm
@midnightGiống @daily, chạy lúc nửa đêm
@hourlyChạy một lần/giờ, đầu giờ

Ví dụ chạy script lúc nửa đêm mỗi đêm:

@midnight /opt/scripts/script.sh

Dùng "@midnight" thay "0 0 * * *" cho cùng hiệu quả nhưng dễ đọc hơn. Cũng có thể dùng dấu gạch nối để khai báo khoảng. Lệnh dưới chạy "script.sh" đầu mỗi giờ từ 1h đến 6h sáng:

0 1-6 * * * /opt/scripts/script.sh

Cron còn nhiều tính năng hay. Mọi sysadmin đều tin dùng nó, dễ dùng khi quen và rất mạnh. Hãy dùng khôn ngoan, vì lên lịch sai có thể gây hại lớn. Khuyên đọc "man page" của crontab. Cũng đáng học lệnh at để lên lịch lệnh khác.