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.
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