1. Cron là gì?
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.
2. Cron làm việc thế nào?
Một cron schedule đơn giản là một text file. Mỗi người dùng có một cron schedule riêng, file này thường nằm ở /var/spool/cron. Crontab files không cho phép bạn tạo hoặc chỉnh sửa trực tiếp với bất kỳ trình text editor nào, trừ phi bạn dùng lệnh crontab. Một số lệnh thường dùng:
Quote:
crontab -e: tạo hoặc chỉnh sửa file crontab
crontab -l: hiển thị file crontab
crontab -r: xóa file crontab
3. Cấu trúc của crontab
Một crontab file có 5 trường xác định thời gian, cuối cùng là lệnh sẽ được chạy định kỳ, cấu trúc như sau:
Code:
* * * * * command to be executed
– – – – –
| | | | |
| | | | +—– day of week (0 – 6) (Sunday=0)
| | | +——- month (1 – 12)
| | +——— day of month (1 – 31)
| +———– hour (0 – 23)
+————- min (0 – 59)
Nếu một cột được gán ký tự *, nó có nghĩa là tác vụ sau đó sẽ được chạy ở mọi giá trị cho cột đó.
4. Ví dụ
Giả sử tôi viết một đoạn script backup bookmarks trong Firefox như sau:
Code:
#!/bin/bash
date=`date +%F`
cp ~/.mozilla/firefox/13kee53o.default/bookmarks.html /mnt/data/BACKUP/bookmarks-$date.html
sau đó tôi cho script này chạy định kỳ vào 15h thứ Hai và thứ Năm hàng tuần bằng cách tạo một file crontab như sau:
Code:
$ crontab -e
0 15 * * 1,4 sh /mnt/data/linux/code/backupbookmarks.sh
Cuối cùng, nhớ khởi động lại cron daemon:
Code:
/etc/init.d/crond restart
ps: Để muốn “test” ngay xem crontab nó có hoạt động không, bạn có thể sửa lại đoạn script trên một chút:
Code:
#!/bin/bash
date=`date +%F-%H-%M-%S`
cp ~/.mozilla/firefox/13kee53o.default/bookmarks.html /mnt/data/BACKUP/bookmarks-$date.html
và file crontab bạn sẽ cho backup liên tục theo từng phút như sau:
Quote:
0-59 * * * * sh /mnt/data/linux/code/backupbookmarks.sh
Bạn có thể chỉnh sửa file crontab trong Linux luôn bằng cách xài Software GNU Midnight Commander.
Ngoài ra bạn cũng có thể tạo File crontab (không có đuôi) trên máy Windows (cách này thường dùng trong trường hợp máy chủ là Linux máy con là Windows) bằng chương trình NOTEPAD rồi dùng Software WinSCP chuyển qua máy Linux.
Lưu ý sau khi chuyển qua máy Linux phải chạy lênh “dos2unix ‘pathfile'” để chuyển sang loại file Linux đọc được.
5. Hướng dẫn sử dụng Crontab
Là một lệnh shell được sử dụng trong linux với mục đích lập thời gian biểu tự động chạy một ứng dụng cụ thể nào đó hoặc để thực hiện tự động 1 nhiệm vụ nào đó mà người dùng định nghĩa. Khi thực hiện khai báo lệnh này cần chú ý về thời gian thực hiện, tránh thực hiện những lệnh backup data hay restart service trong thời gian nhạy cảm của hệ thống: thời gian có nhiều tiến trình đang hoạt động, có nhiều kết nối từ bên ngoài vào …
- Nội dung
Là một lệnh shell được sử dụng trong linux với mục đích sử dụng thời gian biểu tự động chạy một ứng dụng cụ thể nào đó hoặc để thực hiện tụ động 1 nhiệm vụ nào đó mà người dùng định nghĩa.
Thường được dùng để backup hoặc xóa các file tạm được sinh ra trong quá trình vận hành hệ thống… được định nghĩa trong file /etc/crotab.
Cú pháp câu lệnh Crontab
Ví dụ:
Để xóa file home/someuser/tmp/ vào lúc 18h45 hàng ngày ta dùng lệnh sau:
4518***User rm/home/someuser/tmp/*
4518***Là thời gian thực hiện
User là user thực hiện
rm/home/someuser/tmp/* Công việc thực hiện
Các bước tiến hành như sau:
Bước 1: Khở động terminal của máy muốn thực hiện.
Bước 2: Dùng lệnh cd để truy cập vào thư mục /etc
Bước 3: Mở file crontab bằng lệnh vi or vim trong linux để cấu hình
Bước 4: Tiến hành thiết đặt các thông số cần thiết
Bước 5: Save file crontab và thực hiện restart lại dịch vụ crontab bằng lệnh sau:
service crond restart
- Thực hiện nhiều nhiệm vụ
Nếu như ta thực hiện cùng lúc 1 gói các lệnh thì ta nên tạo ra một file_crontab.sh để thực hiện cùng nhiều lệnh (tương đương với file.bat trong windows)
Ví dụ:
Bước 1: Ta tiến hành tạo một file file_crontab.sh có nội dung như sau bằng lệnh vi (vim)
mkdir -p/root/test
cp/tmb/* /root/test
cd/root/test
taz -cvf test.tar/root/test/*
cp/root/test/test.tar/home/someuser/tmp
Bước 2: Tiến hành thiết lập cấu hình cho file crontab the trình tự các bước ở phần trên rồi khởi động lại.
– Thêm dòng này vào file crontab.
0020***root sh/path/file_crontab.sh
– Restart lại dịch vụ crontab
Ví dụ lập lịch backup mysql lúc 4 giờ sáng hàng ngày
Giả sử một đoạn script backup database MySQL như sau:
#!/bin/bash
DB=db_gocit_bk_`date +%Y%m%d-%H%M`.sql
/usr/bin/mysqldump -u root –password=’password_gocit’ –databases gocit -R > /backup/database/$DB
gzip /backup/database/$DB
Sau đó cho script này chạy định kỳ vào 4h sáng hàng ngày bằng cách tạo một file crontab như sau:
# crontab -e
0 4 * * * /bin/sh /backup/backup.sh >/dev/null
Cuối cùng, nhớ kiểm tra dịch vụ cron daemon
# /etc/init.d/crond status
Nếu crontab chưa khởi động thì khởi động bằng lệnh
# /etc/init.d/crond start
# chkconfig crond on
Ví dụ lập lịch khởi động lại dịch vụ httpd hàng giờ
Giả sử một đoạn script backup database MySQL như sau:
Tạo file autorestart.sh với nội dung sau
#vi /etc/autorestart.sh
Trích dẫn:
|
|
Sau đó cho script này chạy định kỳ vào phút thứ 5 hàng giờ bằng cách tạo một file crontab như sau:
Trích dẫn:
|
|
Cuối cùng, nhớ kiểm tra dịch vụ cron daemon
Trích dẫn:
|
|
Nếu crontab chưa khởi động thì khởi động bằng lệnh
Trích dẫn:
|
|
Chạy crontab 5 phút or 5 giờ or 5 ngày 1 lần thì dùng cấu trúc sau
5 phút */5
5 giờ 0 */5
Mã:
|
*/5 * * * * sh /home/ramesh/backup.sh 0 */5 * * * sh /home/ramesh/backup.sh |
Tham khảo thêm ở: http://www.thegeekstuff.com/2011/07/cron-every-5-minutes/
Một số lưu ý
– Khi thực hiện khai báo lệnh này ta lên chú ý về thời gian thực hiện, tránh thực hiện những lệnh backup dữ liệu hay restart lại service trong thời gian nhạy cảm của hệ thống (thời gian có nhiều tiến trình đang hoạt động, có nhiều kết nối từ bên ngoài vào).
Tài liệu tham khảo:
Các bạn có thể tham khảo tài liệu tiếng Anh tại địa chỉ sau:
http://www.tech-geeks.org/contrib/md…ntab-howto.htm
Sưu tầm