Crontab: Hướng Dẫn Toàn Tập Từ Cơ Bản Đến Nâng Cao
5:00 read
Crontab Là Gì?
Crontab (cron table) là một file cấu hình chứa danh sách các lệnh được lên lịch để chạy tự động tại các thời điểm cụ thể trên hệ thống Unix/Linux. Nó là công cụ mạnh mẽ cho system administrators và developers để tự động hóa các tác vụ lặp lại.
Cron là daemon (dịch vụ chạy nền) chịu trách nhiệm đọc các crontab file và thực thi các lệnh theo lịch đã định.
Lợi Ích Của Crontab
- ✅ Tự động hóa các tác vụ lặp lại
- ✅ Giảm thiểu lỗi do thao tác thủ công
- ✅ Chạy tasks vào thời điểm không tải cao
- ✅ Không cần can thiệp của người dùng
- ✅ Có sẵn trên hầu hết các hệ Unix/Linux
- ✅ Đơn giản và dễ sử dụng
Các Loại Crontab
- User Crontab: Crontab của từng user, lưu tại
/var/spool/cron/crontabs/username - System Crontab: Crontab hệ thống tại
/etc/crontab - Cron Directories: Các thư mục đặc biệt như
/etc/cron.daily,/etc/cron.hourly
Cú Pháp Cron Expression
Cấu Trúc Cơ Bản
Mỗi dòng trong crontab gồm 6 trường:
┌───────────── Phút (0 - 59)
│ ┌───────────── Giờ (0 - 23)
│ │ ┌───────────── Ngày trong tháng (1 - 31)
│ │ │ ┌───────────── Tháng (1 - 12)
│ │ │ │ ┌───────────── Ngày trong tuần (0 - 7) (Chủ nhật = 0 hoặc 7)
│ │ │ │ │
│ │ │ │ │
* * * * * command to execute
Các Ký Tự Đặc Biệt
| Ký Tự | Ý Nghĩa | Ví Dụ |
|---|---|---|
* |
Bất kỳ giá trị nào | * * * * * = Mỗi phút |
, |
Danh sách các giá trị | 1,15,30 * * * * = Phút 1, 15, 30 |
- |
Khoảng giá trị | 0-5 * * * * = Từ phút 0 đến 5 |
/ |
Bước nhảy | */5 * * * * = Mỗi 5 phút |
L |
Ngày cuối cùng (Last) | Chỉ dùng trong một số version |
W |
Ngày làm việc gần nhất | Chỉ dùng trong một số version |
# |
Tuần thứ N trong tháng | Chỉ dùng trong một số version |
Các Ví Dụ Cron Expression Phổ Biến
| Expression | Mô Tả |
|---|---|
* * * * * |
Mỗi phút |
*/5 * * * * |
Mỗi 5 phút |
0 * * * * |
Mỗi giờ, vào phút 0 |
0 0 * * * |
Mỗi ngày lúc 00:00 (nửa đêm) |
0 2 * * * |
Mỗi ngày lúc 02:00 |
0 0 * * 0 |
Mỗi Chủ nhật lúc 00:00 |
0 0 1 * * |
Ngày đầu tiên của mỗi tháng lúc 00:00 |
0 0 1 1 * |
Ngày đầu năm (1/1) lúc 00:00 |
0 9-17 * * 1-5 |
Mỗi giờ từ 9h-17h, thứ 2-6 |
0 */4 * * * |
Mỗi 4 giờ |
0 0 */2 * * |
Mỗi 2 ngày lúc 00:00 |
0 0 * * 1,3,5 |
Thứ 2, 4, 6 lúc 00:00 |
30 2 15 * * |
Ngày 15 hàng tháng lúc 02:30 |
0 22 * * 1-5 |
Thứ 2-6 lúc 22:00 |
*/10 * * * * |
Mỗi 10 phút |
Ví Dụ Nâng Cao
# Chạy vào 2:30 AM mỗi ngày thứ Hai
30 2 * * 1 /path/to/script.sh
# Chạy mỗi 15 phút trong giờ làm việc (9-18h) các ngày trong tuần
*/15 9-18 * * 1-5 /usr/bin/process_data.py
# Chạy lúc 00:00 và 12:00 mỗi ngày
0 0,12 * * * /usr/local/bin/backup.sh
# Chạy vào 23:00 các ngày cuối tuần
0 23 * * 6,0 /home/user/cleanup.sh
# Chạy mỗi 30 phút từ 8:00 đến 17:30 các ngày trong tuần
0,30 8-17 * * 1-5 /usr/bin/check_status.sh
Yêu cầu đăng nhập
Vui lòng đăng nhập để truy cập nội dung này
Additional Resources
Course Guide
Comprehensive PDF guide with examples
GitHub Repository
Example code for all lessons
Discussion
Have a question about this lesson? Post it here and get answers from instructors and peers.
