Thứ Hai, 03/08/2026, 17:00 (GMT+0)

Crontab là gì? Cú pháp và cách sử dụng Crontab Linux

Quay lại Trang chủ Blog
Trên trang này

Crontab là công cụ giúp người dùng Linux lên lịch để tự động thực thi lệnh hoặc script vào những thời điểm xác định. Thay vì đăng nhập server và chạy tác vụ thủ công mỗi ngày, bạn có thể dùng Crontab để tự động backup dữ liệu, dọn log, chạy script, đồng bộ dữ liệu hoặc thực hiện nhiều công việc quản trị hệ thống khác.

Để sử dụng Crontab hiệu quả, trước tiên cần phân biệt rõ Cron, Crontab và Cron Job cũng như hiểu cấu trúc 5 trường thời gian của một lịch chạy.

Crontab là gì?

Crontab là bảng cấu hình chứa danh sách các lệnh cần thực thi cùng với thời gian tương ứng trên hệ điều hành Unix/Linux. Mỗi người dùng có thể có Crontab riêng và các lệnh trong đó được thực thi với quyền của người sở hữu Crontab.

Một dòng Crontab cơ bản có dạng:

0 2 * * * /home/user/backup.sh

Dòng trên có nghĩa là chạy file backup.sh vào lúc 02:00 mỗi ngày.

Crontab thường được sử dụng trong những công việc cần thực hiện định kỳ như:

  • Backup cơ sở dữ liệu vào ban đêm.
  • Xóa hoặc lưu trữ log cũ.
  • Chạy script PHP, Python hoặc Shell.
  • Đồng bộ dữ liệu giữa các hệ thống.
  • Thực hiện tác vụ bảo trì server.
  • Tạo báo cáo theo ngày hoặc tuần.
  • Kiểm tra trạng thái dịch vụ định kỳ.

Nhờ khả năng tự động hóa này, Crontab đặc biệt hữu ích đối với Developer, System Administrator và DevOps khi quản lý Linux Server, VPS hoặc Cloud Server.

crontab-2.jpg

Phân biệt Cron, Crontab và Cron Job

Cron, Crontab và Cron Job có liên quan chặt chẽ nhưng không phải cùng một khái niệm.

Thuật ngữ

Ý nghĩa

CronDịch vụ hoặc daemon chịu trách nhiệm kiểm tra lịch và thực thi các tác vụ
CrontabBảng cấu hình chứa lịch chạy và lệnh
Cron JobMột tác vụ cụ thể được khai báo trong Crontab

Có thể hiểu đơn giản:

Cron là bộ máy thực thi → Crontab là bảng lịch → Cron Job là từng công việc trong bảng lịch đó.

Ví dụ:

30 1 * * * /home/user/database-backup.sh

Đây là một Cron Job được lưu trong Crontab. Cron sẽ kiểm tra lịch và chạy script database-backup.sh lúc 01:30 mỗi ngày.

Crontab hoạt động như thế nào?

Quá trình hoạt động của Crontab có thể hình dung theo các bước:

  1. Người dùng khai báo thời gian và lệnh trong Crontab.
  2. Cron daemon chạy nền trên hệ thống.
  3. Cron kiểm tra các lịch được cấu hình.
  4. Khi thời gian hiện tại khớp với lịch, lệnh tương ứng được thực thi.
  5. Kết quả của tác vụ có thể được ghi vào file log hoặc chuyển hướng đến vị trí khác.

Ví dụ bạn muốn backup database lúc 02:00 mỗi ngày:

0 2 * * * /home/user/backup-db.sh

Khi đồng hồ hệ thống đến 02:00, Cron sẽ thực thi script đó mà không cần người quản trị đăng nhập SSH và chạy lệnh thủ công.

Đây là lý do Cron thường được sử dụng cho các quy trình tự động hóa đơn giản trên Linux Server.

Cấu trúc và cú pháp Crontab

Một Cron Job trong Crontab của người dùng thường có cấu trúc:

* * * * * command
│ │ │ │ │
│ │ │ │ └── Thứ trong tuần
│ │ │ └──── Tháng
│ │ └────── Ngày trong tháng
│ └──────── Giờ
└────────── Phút

Năm trường đầu tiên xác định thời gian chạy, phần còn lại là lệnh cần thực thi. Linux cron sử dụng các phạm vi thời gian phổ biến sau: phút 0-59, giờ 0-23, ngày trong tháng 1-31, tháng 1-12 và ngày trong tuần.

Trường

Giá trị

Ý nghĩa

Minute0 – 59Phút
Hour0 – 23Giờ
Day of month1 – 31Ngày trong tháng
Month1 – 12Tháng
Day of week0 – 7Thứ trong tuần, 0 hoặc 7 thường là Chủ nhật

Ví dụ:

15 8 * * * /home/user/script.sh

Có nghĩa là chạy script.sh lúc 08:15 mỗi ngày.

Ý nghĩa các ký tự trong Crontab

Ngoài số cụ thể, Crontab hỗ trợ một số ký tự giúp thiết lập lịch linh hoạt hơn.

Dấu * – tất cả giá trị

* * * * *

Nếu đặt dấu * ở trường phút, nghĩa là mọi phút đều phù hợp.

Ví dụ:

* * * * * /home/user/test.sh

Lệnh sẽ được chạy mỗi phút.

Dấu , – danh sách giá trị

0 8,12,18 * * *

Tác vụ chạy lúc 08:00, 12:00 và 18:00 mỗi ngày.

Dấu - – phạm vi

0 9 * * 1-5

Tác vụ chạy lúc 09:00 từ thứ Hai đến thứ Sáu.

Dấu / – bước nhảy

*/5 * * * *

Tác vụ chạy vào các phút 0, 5, 10, 15... của mỗi giờ, thường được diễn giải là chạy mỗi 5 phút. Các biểu thức range, list và step đều được Cron hỗ trợ trong trường thời gian.

Crontab.jpg

Các lệnh Crontab thường dùng

Linux cung cấp tiện ích crontab để người dùng quản lý bảng lịch của mình.

Chỉnh sửa Crontab

crontab -e

Lệnh này mở Crontab của user hiện tại trong trình soạn thảo văn bản.

Bạn có thể thêm Cron Job mới, ví dụ:

0 3 * * * /home/user/backup.sh

Sau khi lưu file, lịch mới sẽ được áp dụng.

Xem danh sách Cron Job

crontab -l

Lệnh hiển thị toàn bộ Cron Job hiện có của user.

Xóa Crontab

crontab -r

Lệnh này xóa Crontab của user hiện tại. Cần thận trọng khi sử dụng vì các lịch đang cấu hình có thể bị xóa toàn bộ. Các tùy chọn -e-l và -r là những chức năng chuẩn của tiện ích crontab.

Các ví dụ Crontab phổ biến

Hiểu cú pháp sẽ dễ hơn khi áp dụng vào lịch chạy thực tế.

Chạy mỗi phút

* * * * * /home/user/script.sh

Chạy mỗi 5 phút

*/5 * * * * /home/user/script.sh

Chạy mỗi 30 phút

*/30 * * * * /home/user/script.sh

Chạy vào đầu mỗi giờ

0 * * * * /home/user/script.sh

Ví dụ tác vụ sẽ chạy lúc 10:00, 11:00, 12:00...

Chạy lúc 00:00 mỗi ngày

0 0 * * * /home/user/script.sh

Chạy lúc 02:00 mỗi ngày

0 2 * * * /home/user/backup.sh

Đây là lịch thường gặp đối với tác vụ backup hoặc bảo trì server.

Chạy lúc 09:00 từ thứ Hai đến thứ Sáu

0 9 * * 1-5 /home/user/report.sh

Chạy vào Chủ nhật hàng tuần

0 0 * * 0 /home/user/weekly-backup.sh

Chạy ngày đầu tiên của mỗi tháng

0 0 1 * * /home/user/monthly-report.sh

Chạy nhiều lần trong ngày

0 8,12,18 * * * /home/user/sync.sh

Tác vụ được thực hiện vào 08:00, 12:00 và 18:00.

Các shortcut thường dùng trong Crontab

Bên cạnh cấu trúc 5 trường thời gian, một số triển khai Cron trên Linux hỗ trợ các shortcut giúp lịch dễ đọc hơn.

Shortcut

Ý nghĩa

@rebootChạy sau khi hệ thống khởi động
@hourlyChạy mỗi giờ
@dailyChạy mỗi ngày
@weeklyChạy mỗi tuần
@monthlyChạy mỗi tháng
@yearlyChạy mỗi năm

Ví dụ:

@reboot /home/user/start-service.sh

Script sẽ được thực thi sau khi hệ thống khởi động và Cron bắt đầu hoạt động.

Hoặc:

@daily /home/user/backup.sh

Thay vì phải tự viết:

0 0 * * * /home/user/backup.sh

Shortcut giúp Crontab ngắn và dễ đọc hơn trong các trường hợp lịch đơn giản.

Crontab thường được sử dụng để làm gì?

Crontab có nhiều ứng dụng thực tế trong quản trị hệ thống và vận hành ứng dụng.

Tự động sao lưu dữ liệu

Một trong những ứng dụng phổ biến nhất là backup.

Ví dụ:

0 2 * * * /home/user/backup-database.sh

Database có thể được sao lưu tự động lúc 02:00 mỗi ngày, giảm phụ thuộc vào thao tác thủ công.

Tuy nhiên, Crontab chỉ chịu trách nhiệm lên lịch chạy lệnh. Việc bản backup có hợp lệ hay không, được lưu ở đâu, mã hóa thế nào và có thể phục hồi được hay không vẫn cần được kiểm soát bằng quy trình backup phù hợp.

Dọn dẹp log và file tạm

Các file log có thể tăng kích thước liên tục và chiếm nhiều dung lượng lưu trữ. Cron Job có thể được sử dụng để kích hoạt script dọn dẹp định kỳ.

Ví dụ:

0 3 * * 0 /home/user/cleanup.sh

Script chạy lúc 03:00 Chủ nhật hàng tuần.

Trong hệ thống thực tế, việc quản lý log cũng có thể kết hợp với các công cụ chuyên dụng như logrotate.

Chạy script tự động

Developer có thể sử dụng Crontab để kích hoạt:

python3 /home/user/app/report.py

hoặc:

php /var/www/html/task.php

theo một lịch cố định.

Các tác vụ như tạo báo cáo, xử lý dữ liệu, kiểm tra trạng thái ứng dụng hoặc gửi thông báo đều có thể triển khai theo cách này.

Đồng bộ dữ liệu định kỳ

Cron có thể kết hợp với rsync, script hoặc công cụ đồng bộ để chuyển dữ liệu giữa nhiều vị trí.

Ví dụ:

0 */6 * * * /home/user/sync-data.sh

Tác vụ được kích hoạt vào các mốc giờ cách nhau 6 giờ trong ngày.

crontab.jpg

Crontab và /etc/crontab có gì khác nhau?

Đây là điểm dễ gây nhầm lẫn khi mới sử dụng Linux.

Khi chạy:

crontab -e

bạn đang chỉnh sửa Crontab của user. Cấu trúc thường là:

minute hour day month weekday command

Trong khi system crontab như /etc/crontab hoặc các file phù hợp trong /etc/cron.d/ có thể thêm trường user:

minute hour day month weekday user command

Ví dụ:

0 2 * * * root /usr/local/bin/backup.sh

Vì vậy không nên sao chép nguyên một dòng từ /etc/crontab vào crontab -e mà không kiểm tra cấu trúc. Với system crontab, trường username xuất hiện giữa phần lịch và command; đây là khác biệt quan trọng so với Crontab riêng của người dùng.

Cách kiểm tra khi Crontab không chạy

Một Cron Job có thể đúng cú pháp nhưng vẫn không hoạt động như mong muốn. Các nguyên nhân thường gặp gồm đường dẫn sai, permission, môi trường chạy khác terminal hoặc Cron service không hoạt động.

Kiểm tra Cron Job đã được lưu chưa

Chạy:

crontab -l

Kiểm tra xem dòng cần chạy có xuất hiện hay không.

Kiểm tra Cron service

Tên service có thể khác nhau tùy bản phân phối Linux.

Ví dụ:

systemctl status cron

hoặc:

systemctl status crond

Nếu service không hoạt động, các tác vụ được cấu hình sẽ không thể chạy theo lịch.

Sử dụng đường dẫn tuyệt đối

Một lỗi phổ biến là viết:

python script.py

Cron chạy trong môi trường khác phiên terminal tương tác, vì vậy không nên giả định PATH và thư mục làm việc giống nhau.

Nên sử dụng:

/usr/bin/python3 /home/user/app/script.py

Tương tự, với file Shell Script nên chỉ rõ đường dẫn:

/home/user/scripts/backup.sh

Kiểm tra quyền thực thi

Nếu chạy trực tiếp script, cần đảm bảo file có quyền phù hợp:

chmod +x /home/user/scripts/backup.sh

Đồng thời kiểm tra user chạy Cron Job có quyền đọc, ghi hoặc truy cập các tài nguyên cần thiết hay không.

Ghi output và error vào log

Thay vì để lệnh chạy mà không biết kết quả, có thể chuyển output sang file:

0 2 * * * /home/user/backup.sh >> /var/log/backup.log 2>&1

Trong đó:

  • >> thêm output vào cuối file.
  • 2>&1 đưa standard error vào cùng nơi với standard output.

Log giúp xác định script đã được kích hoạt hay thất bại ở bước nào.

Kiểm tra biến môi trường

Script chạy tốt khi nhập trực tiếp trong terminal chưa chắc chạy tốt bằng Cron.

Nguyên nhân có thể là các biến như:

  • PATH
  • biến môi trường của ứng dụng
  • credential
  • virtual environment
  • working directory

không được nạp giống phiên shell thông thường.

Do đó, nên khai báo rõ môi trường cần thiết hoặc để script tự thiết lập các dependency trước khi chạy.

Kiểm tra timezone

Cron dựa vào thời gian của hệ thống hoặc cấu hình liên quan của môi trường Cron. Nếu server sử dụng timezone khác với thời gian bạn dự kiến, Cron Job có thể chạy đúng lịch hệ thống nhưng lại xuất hiện “sai giờ” đối với người quản trị.

Hãy kiểm tra:

timedatectl

trước khi kết luận lịch Cron bị lỗi.

Câu hỏi thường gặp về Crontab

* * * * * trong Crontab nghĩa là gì?

Năm dấu * tương ứng với phút, giờ, ngày trong tháng, tháng và thứ trong tuần. Khi tất cả đều là *, Cron Job phù hợp với mọi phút và do đó thường được chạy mỗi phút.

Làm sao chạy Cron Job mỗi 5 phút?

Sử dụng:

*/5 * * * * /path/to/script.sh

Làm sao xem các Cron Job hiện tại?

Sử dụng:

crontab -l

Crontab có chạy khi đăng xuất SSH không?

Có. Cron là dịch vụ chạy nền của hệ thống nên Cron Job không phụ thuộc vào việc bạn đang mở phiên SSH hay đã đăng xuất, miễn là dịch vụ Cron và hệ thống vẫn hoạt động.

crontab -e là gì?

crontab -e mở bảng Crontab của user hiện tại để chỉnh sửa hoặc bổ sung các Cron Job.

Crontab và Cron Job khác nhau thế nào?

Crontab là bảng chứa lịch và các lệnh. Cron Job là một tác vụ cụ thể được khai báo trong bảng đó.

Ví dụ một Crontab có thể chứa 10 Cron Job khác nhau.

Cron Job có chạy khi server tắt không?

Không. Nếu server không hoạt động tại thời điểm Cron Job được lên lịch, Cron thông thường không thể thực thi tác vụ đó vào thời điểm đã bỏ lỡ. Những yêu cầu cần “chạy bù” sau thời gian downtime cần cơ chế lập lịch phù hợp hơn.

Kết luận

Crontab là công cụ đơn giản nhưng rất hữu ích để tự động hóa các tác vụ định kỳ trên Linux. Chỉ với cấu trúc 5 trường thời gian và một command, người quản trị có thể lên lịch backup, chạy script, đồng bộ dữ liệu, dọn log và thực hiện nhiều công việc vận hành server mà không cần thao tác thủ công.

Khi triển khai Crontab trên môi trường production, cần chú ý quyền truy cập, log, timezone, tài nguyên hệ thống và khả năng chạy chồng lấn giữa các tác vụ. Với các ứng dụng cần hạ tầng Linux linh hoạt và khả năng mở rộng tài nguyên theo nhu cầu, VNPT Cloud Server cung cấp môi trường điện toán đám mây phù hợp để doanh nghiệp triển khai và vận hành các workload, ứng dụng và tác vụ tự động trên cloud.

#Kiến thức Cloud
#Kiến thức Cloud
Sovereign Cloud không chỉ là đặt máy chủ trong nước. Với bối cảnh pháp lý dữ liệu mới tại Việt Nam, đây đang trở thành bài toán hạ tầng quan trọng cho doanh nghiệp Việt và doanh nghiệp nước ngoài hoạt động tại Việt Nam
Sovereign Cloud - Đám mây chủ quyền là gì? Và vì sao doanh nghiệp hoạt động tại Việt Nam nên quan tâm từ bây giờ?
Tiếp tục đọc