Kiểm tra trạng thái Crontab trên Server Linux của bạn

Kiểm tra trạng thái dịch vụ cron có đang chạy không

service crond status

Khởi động, khởi động lại, dừng dịch vụ cron thì thay status bằng start restart stop

Kiểm tra danh sách các Crontab

# crontab -l

Lệnh này sẽ liệt kê danh sách các crontab được cấu hình chờ chạy

Nơi lưu trữ các cấu hình crontab

Mặc định thì lưu trữ tại /var/spool/cron/ nhưng tùy hệ thống có thể lưu trữ ở các vị trí khác

Tìm hiểu định dạng các dòng Crontab

Mỗi dòng crontab có định lưu các số liệu sau

*[phút]  *[giờ]  *[ngày trong tháng]  *[tháng]  *[thứ]  [lệnh chạy (script hoặc lệnh linux)]

Vậy mỗi dòng thường có 6 cột dữ liệu, 5 cột đầu để xác định thời điểm chạy (thời gian). Cột thứ 6 là lệnh chạy (thường là một script).

Các cột thời gian, loại thời gian nào luôn xảy ra để dấu * (ví dụ mọi phút thì cột phút để dấu *, mọi giờ thì cột giờ để *, mọi ngày thì cột ngày để * ....) còn muốn xảy ra ở một thời điểm cụ thể thì điền thời điểm đó vào.

Ví dụ: Cứ đến phút 30 hàng giờ thì chạy script tên là /script/abc.sh thì cấu trúc như sau:

Điền số 30 vào cột phút, các cột giờ, ngày, tháng, thứ điền * vì xảy ra mọi giờ, mọi ngày, mọi tháng. Vậy dòng crontab phù hợp như sau:

30 * * * *  /script/abc.sh

Tương tự như vậy xem một số ví dụ sau:

Chạy vào lúc 3 giờ hàng ngày

0 3 * * *  /script/abc.sh

Chạy vào lúc 17h ngày chủ nhật hàng tuần

0 17 * * sun /scripts/abc.sh

Cứ 8 tiếng là chạy

0 */8 * * * /scripts/abc.sh

Cứ 30 phút chạy một lần

*/30 * * * * /script/abc.sh

Ngoài ra còn một số dạng tắt:

Chạy hàng tháng

@monthly /scripts/abc.sh

Chạy hàng tuần

@weekly /bin/script.sh

Chạy hàng ngày

@daily /scripts/script.sh

Thêm Crontab vào hệ thống

Để thêm crontab dùng lệnh

#crontab -e

Rồi sạo thảo các dòng crontab theo định dạng ở trên, sau đó lưu lại là xong.

Ví dụ về Crontab

Kiểm tra database và tự sửa chữa.

Mysql nhiều khi bị crash database và cần repair, tạo một script làm việc này và chạy vào 3h sáng hàng ngày.

Làm như sau:

Tạo một script tên là rpairdb.sh với nội dung như sau

#!/bin/bash
mysqlcheck -u{username}  -p{password} --auto-repair --check --all-databases

Trong đó {username} : điền tài khoản admin của mysql; {password} thay bàng password.

Sau đó gõ lệnh

crontab -e

Thêm vào một dòng với nội dung

*    3    *    *    *    /rpairdb.sh

Lưu lại là xong.

Cứ 30 phút là chạy một script trong file .php

Giả sử bạn có file PHP, lưu tại /home/user/run30.php, trong đó có các code php mà bạn muốn chạy cứ 30 phút một lần bạn làm tương tự như trên và thêm vào crontab

*/30    *    *    *    *    php /home/user/run30.php