Định nghĩa
Sử dụng crontab hoặc at để thực thi câu lệnh, scripts vào 1 thời điểm nào đó
+ cd /etc/cron ấn tab
[root@thanhdd ~]# cd /etc/cron
cron.d/ cron.deny cron.monthly/ cron.weekly/
cron.daily/ cron.hourly/ crontab
cron.deny – Định nghĩa các user không được thực thi cron
cron.monthly/ – Run jobs monthly
cron.weekly/ – Run jobs weekly
cron.daily/ – Run jobs daily
cron.hourly/ – Run jobs hourly
crontab – file cấu hình các jobs crontab
crontab fomat
vi /etc/crontab
* | * | * | * | * | user-name | command to be executed |
phút
(0 – 59) |
giờ
(0 – 23) |
ngày của tháng
(1 – 31) |
tháng
(1 – 12) OR jan,feb,mar,apr … |
ngày trong tuần
(0 – 6) (Sunday=0 or 7) OR sun,mon,tue,wed,t |
lệnh hoặc script được chạy |
Ví dụ crontab
30 08 10 06 * /home/test3/full-backup
>>> Thực thi full-backup vào lúc 8h30 ngày 10 tháng 6
00 11,16 * * * /home/test3/bin/incremental-backup
>>> Thực thi incremental-backup vào lúc 11h và 16h mỗi ngày
00 09-18 * * * /home/test3/bin/check-db-status
>>> Thực thi check-db-status vào 9h đến 18h hàng ngày
00 09-18 * * 1-5 /home/test3/bin/check-db-status
>>> Thực thi check-db-status vào 9h đến 18h từ thứ 2 đến thứ 6
* * * * * CMD
>>> Thực thi câu lệnh mỗi phút
*/10 * * * * /home/test3/check-disk-space
>>> Thực thi check-disk-space mỗi 10 phút 1 lần
@yearly /home/test3/red-hat/bin/annual-maintenance
>>> Thực thi vào phút đầu tiên của năm
@monthly /home/test3/suse/bin/tape-backup
>>> Thực thi vào phút đầu tiên của tháng
@daily /home/test3/arch-linux/bin/cleanup-logs "day started"
>>> Thực thi vào phút đầu tiên của ngày
@reboot CMD
>>> Thực thi câu lệnh ngay sau khi reboot
log crontab
Để xác minh xem crontab có được thực thi thành công hay không, hãy kiểm tra tệp /var/log/cron, tệp này chứa thông tin về tất cả các công việc cron được thực thi trong hệ thống.
tail /var/log/cron
cat /var/log/cron
crontab có thể thực thi ở 2 mức độ
+ Peruser: Mỗi user có thể định nghĩa 1 tiến trình crontab riêng. * Sau khi ta thiết lập thì file crontab cho user sẽ được tạo ra trong folder “/var/spool/cron” của user đó
+ System-Wide: định nghĩa crontab ở mức độ hệ thống. * Ta ghi thêm các dòng cấu hình ở trong file /etc/crontab
Tạo crontab cho user bình thường
+ Kiểm tra vị trí đặt file cấu hình crontab cho user
[test3@thanhdd ~]$ cd /var/spool/cron
ls -l
+ Cấu hình crontab cho user test3
$ crontab -e
# crontab -u test3 -e
+ Hiển thị bảng crontab của 1 user
$ crontab -l
# crontab -u test3 -l
+ xóa tất cả crontab của 1 user
$ crontab -r
# crontab -u test3 -r
Tạo crontab ở mức độ cho từng user
+ cho user thử câu lệnh
uptime | awk '{print $5,$6,$7,$8,$9}'
+ tạo ra 1 file scripts
vi load.sh
# ghi vào file
#!bin/bash
#khai báo ngôn ngữ là bashshell
Filename=/home/test3/load.txt
uptime | awk '{print $5,$6,$7,$8,$9}' >> $Filename
# Do đây là 1 cripts nên cần cho quyền thực thi
chmod +x load.sh
# Chạy file load.sh
sh ./load.sh
# Nếu chạy đúng trong home folder của user sẽ sinh ra file load.txt
ls -l
cat load.txt
#sẽ thấy thông tin show ra sau khi scripts được chạy
+ Tạo crontab cho user
# tạo cron mỗi phút sẽ kích hoạt scripts
crontab -e
* * * * * sh /home/test3/load.sh
#ghi vào trong file
# kiểm tra
watch cat load.txt
#sẽ thấy cứ 1 phút sẽ thêm 1 dòng
# su về user root kiểm tra folder
ls -l /var/spool/cron
# sẽ thấy file tets3
cat /var/spool/cron/test3
# sẽ thấy dòng crontab đã tạo
cấu hình crontab cho toàn hệ thống
+ tạo scripts “ping.sh”
cd
+ vi ping.sh
# ghi vào file
#!bin/bash
#khai báo ngôn ngữ là bashshell
Filename=/root/ping.txt
date >> $Filename && ping -c 1 localhost >> $Filename
echo "***END-PING***" >> $Filename
+ Gắn thêm quyền thực thi cho scripts
chmod +x ping.sh
+ chạy thử
ls
# Sẽ thấy file ping.sh
sh ./ping.sh
# Chạy cripts
ls
# Sẽ thấy có thêm file ping.txt
+ Cấu hình cronb ở mức độ system-wide, bằng cách ghi thêm vào file /etc/crontab
vi /etc/crontab
* * * * * root sh /root/ping.sh
+ kiểm tra
watch cat ping.txt
# mỗi phút sẽ có thêm dòng kết quả ping trong file
+ Ví dụ tạo scripts để RSYNS
vi rsync.sh
#!bin/bash
rsync -auv –delete -e ssh /home/ root@192.168.225.1:/backup
vi /etc/crontab
* * * * * root sh /root/rsync.sh