1 tháng 8, 2013

Hướng dẫn sử dụng Crontab trên Linux

1. Crontab là gì?

Cron là một tiện ích cho phép các tác vụ (tasks) tự động chạy nền trên hệ thống theo định kỳ bằng cách sử dụng các cron daemon. Crontab (CRON TABle) là một file chứa đựng trong nó các bảng biểu (schedule) cần chạy cũng như thời gian chạy của nó. Nó tương tự như Task Scheduler của Windows. Tất cả những gì chúng ta cần làm là gán các chương trình cần thực thi tới file crontab của hệ thống và sử dụng cấu trúc lệnh phù hợp, cron sẽ tự động thực hiện các ứng dụng đó vào thời điểm đã được thiết lập sẵn trước đó. Do vậy, tính năng này rất phù hợp trong quá trình tự động sao lưu dữ liệu, bảo dưỡng hệ thống... và các công việc tương tự khác.


2. Cài đặt Crontab

Kiểm tra coi đã cài đặt Cron chưa bằng lệnh:
Rpm –qa | grep cron
Nếu chưa cài đặt thì cài đặt
Yum install crontabs


3. Crontab làm việc như 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:

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

4. 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:
minute(0-59) hour(0-23) day(1-31) month(1-12) weekday(0-6) command

*     *     *     *     *     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 đó.

5. Ví dụ:

Bạn muốn copy file access_log và error_log trong apache vào thư mục /Backup hàng ngày vào lúc 11h30 AM

Đầu tiên bạn tạo ra một file scrip tenfile.sh chứa đựng lệnh mà bạn cần chạy, trong trường hợp này là:

#!/bin/bash
date=`date +%F-%H-%M-%S`
cp /var/log/httpd/access_log /Backup/access_log-$date
cp /var/log/httpd/error_log /Backup/error_log-$date

Lưu vào thư mục /Backup với tên backup.sh

Mở crontab bằng lệnh: crontab –e

crontab -e 
30 11 * * * sh /Backup/backup.sh

Bạn cũng có thể cho backup theo từng phút bằng lệnh:
0-59 * * * * sh /Backup/backup.sh


:x! để lưu lại, service crond status để kiểm tra dịch vụ crontab.
service crond start để start dịch vụ crondtab (service crond restart để khởi động lại dịch vụ).
chkconfig crond on để start dịch vụ cùng hệ thống.

Lưu ý:
- Bạn có thể viết lệnh trực tiếp vào trong cron table, nếu để trong 1 file script thì thêm #!/bin/bash vào đầu file.
- Dùng dấu , để ngăn tách các giá trị, dấuđể liên tiếp các giá trị (ví dụ bạn ưng vào tháng 1, 5, 6 hoặc từ tháng 1 tới tháng 6 (1-6)).
- Bạn có thể chạy nhiều scrip trên crontab, mỗi cái viết trên 1 dòng.
- Luôn luôn dùng đường dẫn đầy đủ khi viết script để chạy cron job.


Không có nhận xét nào:

Đăng nhận xét