Lập lịch thi hành lệnh – cron và crontab
- Những tác vụ hệ thống lặp đi lặp lại theo những khoảng thời gian định kỳ có thể được lập lịch để thi hành tự động.
- Lịch này có thể thực hiện bằng lệnh cron, thông tin lịch được đặt trong tập tin crontab.
minute hour day month week command
minute: 0 – 59
hour: 0 – 23
day: 1 – 31
month: 1 – 12
week: 0 – 6
Lưu trữ: /usr/lib/cron/cron.allow hoặc /usr/lib/cron/cron.deny.
Lập lịch thi hành lệnh – cron và crontab
- Tiến trình con cứ mỗi phút một lần thực hiện kiểm tra các thay đổi của các tập tin crontab của người dùng có trong thư mục /var/spool/cron/., /etc/crontab, /etc/cron.d/.
- Tập tin /etc/crontab: các biến môi trường SHELL (khai báo shell dùng thi hành lệnh), PATH (đường dẫn được dùng để tìm kiếm lệnh), MAILTO (tên tài khoản nhận kết quả lệnh do cron thi hành) và HOME (thư mục chủ dùng để thi hành lệnh và script)
- Các tập tin cần lưu ý:
/etc/cron.hourly/.
/etc/cron.daily/.
/etc/cron.weekly/.
/etc/cron.monthly/.
Thiết lập lịch, quản lý crontab
Để thực hiện lập lịch, tiến hành 2 bước:
- Tạo một tập tin crontab với tên bất kỳ và khai báo các mục của crontab vào trong tập tin này.
- Thi hành lệnh crontab với đối số là tên tập tin crontab vừa tạo. Lệnh này sẽ lấy nội dung trong tập tin crontab vừa tạo và tạo một tập tin crontab vào trong thư mục /var/spool/cron/, với tên là tên tài khoản người dùng đã thi hành lệnh crontab
Cú pháp:
crontab [ -u user] file
crontab [ -u user] -l | -r | -e
-u user: chỉ ra tên tài khoản người dùng mà lệnh tác động đến tập tin crontab file của người dùng này.
-l: hiển thị nội dung tập tin crontab của người dùng user.
-r: xoá tập tin crontab
-e: cho phép sửa đổi nội dung tập tin crontab.
Ví dụ:
20 1 * * * /usr/bin/calendar –
0 2 1 * 0 /bin/organize_data
0 * * * * date > /tmp/test1 2>/dev/null
Ý nghĩa:
-Cho biết lệnh /usr/bin/calendar – được thực hiện vào 1h20 sáng hàng ngày trong tuần và hàng ngày trong năm.
-Vào 2h00 ngày đầu tiên của mỗi tháng và mỗi ngày chủ nhật file /bin/organize_data phải được thực hiện.
-Chuyển đầu ra của tập tin /tmp/test1 và thông báo lỗi vào /dev/null (tức là bỏ các thông báo lỗi)