Tự động thực hiện task bằng crontab
1. Cơ bản về cron
Cron là một tiện ích cho phép thực hiện các tác vụ một cách tự động theo định kỳ, ở chế độ nền của hệ thống. Crontab (CRON TABle) là một file chứa đựng bảng biểu (schedule) của các entries được chạy.
Cài đặt
yum install cronie
Khởi động
service crond start
chkconfig crond on
Các lệnh cơ bản
crontab -l: Xem danh sách cron được thực thi của user
crontab -e: Mở editor để sửa cron
crontab -r: Xóa cron
2. Cấu trúc bản của crontab
Một file cron sẽ có 5 trường xác định thời gian, cuối cùng là lệnh được chạy với cấu trúc:
* * * * * command được thực hiện
- - - - -
| | | | |
| | | | +----- ngày trong tuần (0 - 6) (Sunday=0)
| | | +------- tháng (1 - 12)
| | +--------- ngày trong tháng (1 - 31)
| +----------- giờ (0 - 23)
+------------- phút (0 - 59)
Mỗi dấu cột còn chấp nhận những giá trị:
*
: Tất cả các giá trị
-
: Khoảng giá trị. VD: 6-8 cột giờ thực hiện lúc 6h, 7h, 8h
,
: Liệt kê các giá trị. VD: 10,20,30 cột phút thực hiện ở các phút 10, phút 20, phút 30.
/
: Bước nhảy giá trị. VD: **/15 8-10/2 * * ** sẽ thực hiện vào 8h00, 8h15, 8h30, 8h45, 10h00, 10h15, 10h30, 10h45
Các chuỗi đặc biệt
@reboot
: thực hiện mỗi khi khởi động.@yearly
: thực hiện ngày 1/1 hàng năm, giống 0 0 1 1 *.@annually
: tương tự@yearly
.@monthly
: thực hiện ngày 1 mỗi tháng, giống 0 0 1 * *.@weekly
: thực hiện vào ngày Chủ nhật hàng tuần, giống 0 0 * * 0.@daily
: thực hiện lúc nửa đêm mỗi ngày, giống 0 0 * * *.@midnight
: giống @daily.@hourly
: thực hiện mỗi giờ, giống 0 * * * *.
3. Một số ví dụ
Chạy file backup.sh mỗi 12h trưa hàng ngày:
0 12 * * * /usr/bin/backup.sh
Ghi file log lúc 18h00 từ thứ Hai đến thứ Sáu:
0 18 * * 1-5 echo 'Shutdown the computer' >> info.log
Restart mỗi 2 ngày một lần:
* * * * */2 /var/www/html/reset.sh