+4

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 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   | Lnh             | 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/backup
Tạ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

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí