Site logo

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

  1. User Crontab: Crontab của từng user, lưu tại /var/spool/cron/crontabs/username
  2. System Crontab: Crontab hệ thống tại /etc/crontab
  3. 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.