Tìm hiểu về crontab

Crontab là gì ?

Crontab là một phần mềm tiện ích dựa trên công việc lên lịch và thời gian để thực thi các lệnh trong hệ thống liunx . Những người thiết lập và duy trì môi trường phần mềm sử dụng cron để sắp xếp công việc (các lệnh hoặc các kịch bản shell) để chạy theo định kỳ vào các thời điểm cố định, ngày, hoặc khoảng 

Cách cài đặt (thường crontab đã được cài đặt sẵn)

# yum install cronie -y

Khởi động và cho chạy cùng hệ thống

# service crond start 
# chkconfig crond on

Cấu trúc crontab

* * * * *  <lệnh sẽ chạy khi crontab hoạt động> 
- - - - -
| | | | |
| | | | +----- ngày trong tuần (0 - 6) (chủ nhật=0)
| | | +------- tháng (1 - 12)
| | +--------- ngày trong tháng (1 - 31)
| +----------- giờ (0 - 23)
+------------- phút (0 - 59)

Một số lệnh thường dùng:

  1. crontab -l                        :Kiểm tra các list danh sách mà crontab đang chạy
  2. crontab -u [name] -l         :Kiểm tra các list danh sách mà crontab đang chạy của user nào
  3. crontab -e                        :Tạo một crondtab 
  4. crontab -u <name> -e      :Tạo một crondtab với user
  5. crontab -r                         :Xoá crontab

Chú ý :crontab dùng Vi để soạn thảo

Ấn ’a’ để bắt đầy soạt thảo

Xong ta ấn ’Esc’ để thoát soạt thảo và ấn ’:wq’ để lưu và thoát

Để kiểm tra hoạt động crontab

 # tail -f /var/log/cron

Mặc định crontab gửi email cho người thực thi cron job, nếu bạn muốn tắt chức năng gửi email này đi thì hãy thêm đoạn sau vào cuối dòng

>/dev/null 2>&1

Vd : 30 03 13 12 * rsync -avze ssh /thu-muc-nguon/ root@107.189.160.9:/thu-muc-dich/ >/dev/null 2>&1

VD : Ta kết hợp với Rsync

-Ta chạy lệnh đồng bộ và 3 giờ 30 phút sáng ,vào ngày 13 tháng 12 bất kể ngày trong tuần

30 03 13 12 * rsync -avze ssh /thu-muc-nguon/ root@107.189.160.9:/thu-muc-dich/

-Nếu muốn chạy lệnh nhiều ngày hoặc nhiều giờ ta dùng dấu ’,’ giữa các ngày giờ ,ví dụ chạy vào 6 giờ và 12 giờ ,ngày 01 và ngày 15

* 06,12 01,15 * * rsync -avze ssh /thu-muc-nguon/ root@107.189.160.9:/thu-muc-dich/

-Nếu muốn tạo thời gian từ 1 giờ đến 10 giờ hay từ ngày 1 đến ngày 10 ta dùng dấu ’-’ giữa chúng

* 01-10 01-10 * * rsync -avze ssh /thu-muc-nguon/ root@107.189.160.9:/thu-muc-dich/

-Nếu muốn đồng bộ vào mỗii 10 phút bất cứ ngày giờ tháng ta dùng dấu ’/’

*/10 * * * * rsync -avze ssh /thu-muc-nguon/ root@107.189.160.9:/thu-muc-dich/

Powred by PHPKB (Knowledge Base Software)