Cách viết CRONTAB TRÊN LINUX

DiepNV88

VIP Members
24/09/2013
369
1.552 bài viết
Cách viết CRONTAB TRÊN LINUX
Hiện có thành viên trên diễn đàn đã mail với mình về cách đặt lịch cho shell trên linux chạy vào từng thời gian cụ thể.
Chức năng này có thể xử lý bằng cách cài đặt thiết lập và viết mã cron script trên linux.
Hiện nay mình cũng chưa tìm hiểu nhiều nên lập topic này muốn các bạn có kiến thức về cron cript chia sẻ.
Mở đầu là bài viết khá hữu ích từ internet:

GIT- Tính năng Cron trong Linux thực chất là 1 chế độ sắp xếp tự động các chương trình, ứng dụng và kích hoạt chúng tại 1 thời điểm nhất định trong hệ thống, tương tự với Task Scheduler của Windows.

crontab_1.png

Tất cả những gì chúng ta cần làm tại đây là gán các chương trình cần thực thi tới file crontab của hệ thống và sử dụng cấu trúc lệnh phù hợp, cron sẽ tự động thực hiện các ứng dụng đó vào thời điểm đã được thiết lập sẵn trước đó. Do vậy, tính năng này rất phù hợp trong quá trình tự động sao lưu dữ liệu, bảo dưỡng hệ thống… và các công việc tương tự khác.

Cài đặt crontab bằng yum

yum install crontabs.noarch

yum install vixie-cron ( sử dụng lệnh này nếu lệnh trên không hoạt động)
Cron 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 hoặc chỉnh sửa file crontab

crontab -l: hiển thị file crontab

crontab -r: xóa file crontab
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 đó.

Ví dụ
Giả sử một đoạn script backup database MySQL như sau:

#!/bin/bash
DB=db_gocit_bk_`date +%Y%m%d-%H%M`.sql

/usr/bin/mysqldump -u root –password=’password_gocit’ –databases gocit -R > /backup/database/$DB
gzip /backup/database/$DB

Sau đó cho script này chạy định kỳ vào 4h sáng hàng ngày bằng cách tạo một file crontab như sau:

# crontab -e

0 4 * * * /bin/sh /backup/backup.sh >/dev/null
Cuối cùng, nhớ kiểm tra dịch vụ cron daemon

# /etc/init.d/crond status

Nếu crontab chưa khởi động thì khởi động bằng lệnh

# /etc/init.d/crond start

# chkconfig crond on

Nguồn: gocit.vn
 
Chỉnh sửa lần cuối bởi người điều hành:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Bên trên