Cron là gì
Tương tự như với Windows, Linux cũng có cách để tạo và chạy các lệnh theo một chu kỳ xác định.
Ở Windows nó gọi là
Ở Windows nó gọi là
Task Schedule
, còn với Linux là CronCronjob là các lệnh thực thi hành động đặt trước vào thời điểm nhất định
Câu lệnh và cách thêm cronjob
Trước hết kiểm tra crontab đã được cài đặt hay chưa, nhưng hiếm khi nó không được cài đặt
Các lệnh của Cron
Cú pháp
cron [lệnh]
-u
: xác định user sẽ chạy cron (nếu không muốn chạy = tài khoản đang dùng)-e
: chỉnh sửa file crontab – nội dung bài viết tập trung ở đây-l
: hiển thị danh sách các cronjob đang nằm trong crontab của user đó-r
: xóa crontab của 1 user. tùy chọn thêm: -i
: hỏi trước khi thực hiệnCấu trúc của Cronjob
Cronjob được xác định bởi 5 khoảng thời gian: Phút – Giờ – Ngày – Tháng – Ngày trong tuần(T2 > CN)
Chú thích kỹ hơn về nhưng điều này
Mốc A : Phút
Đây là xác định cronjob sẽ chạy ở phút thứ mấy, dùng
*
sẽ chạy lở mọi mốc thời gian. dùng dấu ,
để tùy chọn các giá trị khác nhau như 1,21,40
thì cron sẽ chạy ở phút 1, phút 20 và phút 40. Dùng -
để xác định một khoảng thời gian, như 1-10
thì sẽ chạy mỗi phút từ phút 1> phút 10. Có thể kết hợp 2 cái này lại: 1,5,10-20
: Chạy ở phút 1 và phút 5, và mỗi phút từ phút 10 > 20Mốc B: Giờ
Đây là xác định cronjob sẽ chạy ở giờ thứ mấy, dùng * sẽ chạy lở mọi mốc thời gian. dùng dấu , để tùy chọn các giá trị khác nhau như 1,21 thì cron sẽ chạy ở 1h sáng và 9h tối. Dùng – để xác định một khoảng thời gian, như 1-10thì sẽ chạy mỗi giờ từ 1h sáng đến 10h sáng. Có thể kết hợp 2 cái này lại.
Ngoài ra, có thể dùng thêm
*/[x]
để chia khoảng thời gian chạy. Ví dụ: */2
chạy mỗi 2h */5
chạy mỗi 5h – Kể từ lúc tạo cron nàyMóc C: Ngày
Tương tự với giờ. Ngày có giới hạn từ 1-31, tháng nào 30 ngày thì nó tự qua 😀
Mốc D: Tháng
Tương tự 2 mốc B và C
Có thể dùng thêm viết tắt các tháng bằng tiếng anh như JAN/DEC ….
Mốc E: Ngày trong tuần
Cho phép dùng từ 0 > 6, và thêm viết tắt của các thư trong tuần như MON-SUN
Bên cạnh đó có thể dùng để tạo cronjob chạy cách ngày như
*/2
– chạy cách mỗi 2 ngàyLưu ý
Hãy cẩn thận với đấu
*
nó có nghĩa là chạy mỗi phút/giờ/ngày, không quan trọng nhưng gì phía sau. như * 12 * * *
sẽ là chạy liên tục mỗi phút ở 12h mọi ngàyCòn nếu muốn đặt chạy một lần, hãy đưa một số cụ thể vào thay vì dấu
*
Ví dụ
Chạy mỗi 15 phút:
*/15 * * * * [lệnh]
Chạy lúc 21giờ tại phút 0:
0 21 * * * [lệnh]
Phức tạp hơn
Chạy mỗi 30 phút từ 9h sáng > 3h chiều cách mỗi 2 ngày:
30 9-15 */2 * * [lệnh]
hoặc 30 9-15 * * */2 [lệnh]
Cụ thể hơn với lệnh xóa cache, chạy mỗi ngày:
0 0 1 * * sync; echo 3 > /proc/sys/vm/drop_caches
Các lệnh nâng cao
Các biến thể của thời gian, có thể không hoạt động
@reboot
sau khi khởi động lại@hourly
mỗi giờ@daily
mỗi ngày@weekly
mỗi tuần@monthly
mỗi tháng@annually
– @yearly
mỗi nămCác lệnh này thêm vào phía sau
[lệnh]
> /dev/null 2>&1
ngăn chạy cronjob gởi mail đến user khi thực hiện xong 0 0 1 * * sync; echo 3 > /proc/sys/vm/drop_caches > /dev/null 2>&1
> /root/cronjob.log
Tạo file log ghi lại hoạt động 0 0 1 * * sync; echo 3 > /proc/sys/vm/drop_caches > /root/cronjob.log
Cách thêm cronjob vào crontab
Sau khi viết xong lệnh rồi, thì đến lúc thêm vào cho nó chạy, ta sử dụng
crontab -e
Thêm lệnh vào một hàng và lưu file cron lại với lệnh
:wq
No comments:
Post a Comment