Tự động thực hiện task bằng crontab

1. Cơ bản về cron

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.

Cài đặt

yum install cronie  

Khởi động

service crond start  
chkconfig crond on  

Các lệnh cơ bản

crontab -l: Xem danh sách cron được thực thi của user  
crontab -e: Mở editor để sửa cron  
crontab -r: Xóa cron  

2. Cấu trúc bản của crontab

Một file cron sẽ có 5 trường xác định thời gian, cuối cùng là lệnh được chạy với cấu trúc:

*     *     *     *     *  command được thực hiện
-     -     -     -     -
|     |     |     |     |
|     |     |     |     +----- ngày trong tuần (0 - 6) (Sunday=0)
|     |     |     +------- tháng (1 - 12)
|     |     +--------- ngày trong tháng (1 - 31)
|     +----------- giờ (0 - 23)
+------------- phút (0 - 59)

Mỗi dấu cột còn chấp nhận những giá trị:
* : Tất cả các giá trị
- : Khoảng giá trị. VD: 6-8 cột giờ thực hiện lúc 6h, 7h, 8h
,: Liệt kê các giá trị. VD: 10,20,30 cột phút thực hiện ở các phút 10, phút 20, phút 30.
/: Bước nhảy giá trị. VD: */15 8-10/2 * * * sẽ thực hiện vào 8h00, 8h15, 8h30, 8h45, 10h00, 10h15, 10h30, 10h45

Các chuỗi đặc biệt

  • @reboot: thực hiện mỗi khi khởi động.
  • @yearly: thực hiện ngày 1/1 hàng năm, giống 0 0 1 1 *.
  • @annually: tương tự @yearly.
  • @monthly: thực hiện ngày 1 mỗi tháng, giống 0 0 1 * *.
  • @weekly: thực hiện vào ngày Chủ nhật hàng tuần, giống 0 0 * * 0.
  • @daily: thực hiện lúc nửa đêm mỗi ngày, giống 0 0 * * *.
  • @midnight: giống @daily.
  • @hourly: thực hiện mỗi giờ, giống 0 * * * *.

3. Một số ví dụ

Chạy file backup.sh mỗi 12h trưa hàng ngày:

0 12 * * * /usr/bin/backup.sh  

Ghi file log lúc 18h00 từ thứ Hai đến thứ Sáu:

0 18 * * 1-5 echo 'Shutdown the computer' >> info.log  

Restart mỗi 2 ngày một lần:

* * * * */2 /var/www/html/reset.sh

Related article