Như thế nào để chạy định kỳ một công việc(Crontabs) trong Linux hoạc Unix

1) Kiểm tra CronTabs /etc/cron.*/

2) Bắt đầu tạo một CronTabs bằng dòng lệnh

crontab -e

 3) Ta có 2 dạng viết

3.1) Viết một lệnh chạy định kỳ trong Crontabs

1 2 3 4 5 /path/to/command arg1 arg2

 3.2) Cho chạy một batch file

1 2 3 4 5 /root/backup.sh

* Ý nghĩa của các con số 1 2 3 4 5

* * * * * 
- - - - -
| | | | |
| | | | ----- Ngày của tuần (0 - 7) (Chủ nhật=0 or 7)
| | | ------- Tháng (1 - 12)
| | --------- Ngày của tháng (1 - 31)
| ----------- Giờ (0 - 23)
------------- Phút (0 - 59)

 4) Một số ví dụ cụ thể

*/5 * * * * /path/to/command

Bash command sẻ chạy mỗi 5 phút.

5 0 * * * /path/to/command

Với câu trên thì sẻ chạy dòng lệnh trên vào lúc 0 giờ 5 phút khuya mỗi ngày.(Vì ở trường giờ mình cài đặt 0 tức là 0 giờ hằng ngày và trường phút là 5).

—————————————————————————————————————————————————————–

15 14 1 * * /path/to/script.sh

Với câu lệnh này sẻ chạy mỗi tháng một lần vào ngày 1 của tháng đó. lúc 14 giờ 15 phút.

—————————————————————————————————————————————————————–

0 22 * * 1-5 /scripts/phpscript.php

Lệnh này sẻ chạy hàng tuần từ thứ 2 đến thứ 5 lúc 22 giờ

—————————————————————————————————————————————————————–

5) Ý nghĩa các ký tự  (*) (,) (-) (/)

(*) Tất cả các giá trị(Nếu * ở giá trị phút thì tức là mỗi phút một lần, giờ thì mỗi giờ một lần …)

(,) Cái này mình phải đưa cụ thể một danh sách( Nếu , ở trường giờ thì liệt kê danh sách các giờ để thực hiện).

(-) Danh sách một dãy các giá trị(0 1-5 * * * nghĩa là thực hiện công việc vào 1h,2h,3h,4h,5h hằng ngày).

(/) Ngắt quảng thời gian thực hiện(0 0-23/2 * * * tức là thực hiện hằng này bắt đầu từ 0 giờ và 2 tiếng sau làm lại 1 lần nửa)

6) Một số lệnh khác

# crontab -l
# crontab -u username -l

Xem danh sách các crontab đang thực hiện

—————————————————————————————————————————————————————–

crontab -r

Xóa tất cả các Crontab đang chạy

—————————————————————————————————————————————————————–

crontab -r -u username

Xóa Crontab của user xác định

7) Sử dụng các ký tự đặt biệt

Ký tự Ý nghĩa
@reboot Chạy một lần lại.
@yearly Chạy một lần một năm, “0 0 1 1 *”.
@annually (giống như @yearly)
@monthly Chạy mỗi tháng một lần, “0 0 1 * *”.
@weekly Chạy mỗi tuần một lần, “0 0 * * 0”.
@daily Chạy mỗi ngày một lần, “0 0 * * *”.
@midnight (giống như @daily)
@hourly Chạy mỗi giờ một lần, “0 * * * *”.

Chúc các bạn thực hiện tốt

Leave a Reply