Tìm hiểu Crontab trên Linux
I. Crontab là gì? Crontab (CRON TABLE) 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 là một file chứa đựng bảng biểu (schedule) của các entries được chạy. Bằng cách sử dụng các lệnh trong Linux Crontab ta có thể tạo những task ...
I. Crontab là gì?
Crontab (CRON TABLE) 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 là một file chứa đựng bảng biểu (schedule) của các entries được chạy.
Bằng cách sử dụng các lệnh trong Linux Crontab ta có thể tạo những task chạy vào những giờ cụ thể đặt trước, như vào giờ nào trong ngày, vào giờ nào trong ngày vào thứ mấy trong tuần….
II. Crontab 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:
crontab -e: tạo, chỉnh sửa các crontab crontab -l: Xem các Crontab đã tạo crontab -r: xóa file crontab
Hầu hết tất cả VPS đều được cài đặt sẵn crontab, tuy nhiên vẫn có trường hợp VPS không có. Nếu bạn sử dụng lệnh crontab -l mà thấy output trả lại -bash: crontab: command not found thì cần tự cài crontab thủ công.
III. Cài đặt crontab
yum install cronie
Start crontab và tự động chạy mỗi khi reboot:
service crond start chkconfig crond on
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:
* * * * * 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 đó.
| Field | Giải thích | Giá trị cho phép | |-------|------------------|---------------------------| | MIN | phút | 0 to 59 | | HOUR | Giờ | 0 to 23 | | DOM | Ngày trong tháng | 1-31 | | MON | Tháng | 1-12 | | DOW | Ngày trong tuần | 0-6 | | CMD | Lệnh | Các lệnh có thể thực hiện |
IV. Example
Ví dụ:
Chạy script 30 phút 1 lần
30 * * * * command
Chạy script vào 3 giờ sáng mỗi ngày
0 3 * * * command
Tạo một tác vụ hoạt động vào một giờ cụ thể
- Backup dữ liệu website: vào ngày 07 tháng 10 lúc 08:11 AM
11 08 10 07 * /home/framgia.vn/backup
Giải thích:
11 – phút 11
08 – lúc 8 giờ
10 – ngày mùng 10
07 – tháng 07
- – hàng ngày trong tuần
Tạo 1 tác vụ thực hiện 2 lần trong một ngày
Backup dữ liệu website: 2 lần trong một ngày lúc 7:00 và 21:00 hàng ngày.
00 07,21 * * * /home/framgia.vn/backup
00 – phút 00
07,21: 07 giờ sáng và 21 giờ tối
-
– hàng ngày
-
– hàng tháng
-
– tất cả các ngày trong tuần
Tạo một tác vụ chỉ thực hiện vào các giờ cụ thể
từ thứ 2 đến thứ 6
00 09-18 * * 1-5 /home/hostingaz.info/full-backup
Một số giá trị thời gian cho Crontab
| Keyword | Equivalent | |---------|---------------------| | @yearly | 0 0 1 1 * | | @daily | 0 0 * * * | | @hourly | 0 * * * * | | @reboot | chạy lúc khởi động. |Tạo một tác vụ chạy vào phút đầu tiên của năm
@yearly /home/framgia.vn/backupTạo một tác vụ chạy vào phút đầu tiên của tháng
@monthly /home/framgia.vn/backup
Tạo một tác vụ chạy khi khởi động lại
@reboot CMD