Sử dụng crontab trên linux

//

Sử dụng crontab trên linux

crontab là gì?

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 là một file chứa đựng các câu lệnh cần được thực thi tự động vào một thơì điểm được thiết lập sẵn

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.

crontab là gì?

Cài đặt crontab

Để cài sử dụng crontab thì trước tiên chúng ta cần cài đặt công cụ này, để biết cron đã được cài đặt chưa các bạn chạy lệnh sau trê ubuntu

dpkg -l cron

Với centos các bạn chạy lệnh sau:

crontab -l

Nếu trả về thông báo: -bash: crontab: command not found thì crontab chưa được cài đặt

Để cài đăt cron các bạn chạy lệnh sau

apt-get install cron           #ubuntu
yum install cronie             #centos

Kiểm tra trạng thái cron

service crond status

khởi động cron

service crond start

Khởi động cron cùng hệ thống

sudo update-rc.d crond enable  #ubuntu
chkconfig crond on             #centos 6
systemctl enable crond         #centos 7

Các lệnh làm việc với crontab

crontab -e: tạo hoặc chỉnh sửa file crontab 
crontab -l: hiển thị danh sách task trong crontab 
crontab -r: xóa file crontab

Làm việc với crontab

Để tự động thực thi một công việc bằng crontab các bạn thực hiện như sau:

crontab -e

Xong thêm lệnh vào file và lưu lại

Để chạy crontab với user khác thì sử dụng lệnh sau:

crontab -u [username] -e

Cấu trúc lệnh của crontab

*[phút]  *[giờ]  *[ngày]  *[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 1giờ 30 phút hàng ngày thì chạy script tên là backup.sh thì cấu trúc như sau:

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

30 1 * * *  /backup.sh

Một số cấu trúc lệnh khác

Cứ 8 tiếng là chạy

0 */8 * * * /backup.sh

Cứ 2 ngày là chạy

0 * */2 * * /backup.sh

Cứ 1 tháng là chạy

0 * * */1 * /backup.sh

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

Chạy hàng tháng

@monthly /backup.sh

Chạy hàng tuần

@weekly  /backup.sh

Chạy hàng ngày

@daily /backup.sh

Ví dụ để backup dữ liệu trong thư mục /var/www vào trong thư mục home/backup trong linux tự động vào lúc 1h00 hàng ngày

0 1 * * * tar -czf /home/backup/bk.tar.gz  /var/www

Như vậy là mình đã giới thiệu qua công cụ crontab rồi, có thể nói đây là một công cụ không thể thiếu trong việc quản trị linux dành cho chúng ta

Xem thêm: HƯỚNG DẪN BACKUP WEBSITE TRÊN SERVER LINUX BẰNG CRONTAB

Leave a Comment