1. Cron là gì?
Cron là một trình lập lịch tác vụ dựa trên thời gian trong hệ điều hành Linux và Unix. Nó chủ yếu được sử dụng để tự động hóa các tác vụ cần được thực hiện định kỳ, giúp quản trị viên hệ thống và nhà phát triển tiết kiệm thời gian. Trên Ubuntu, Cron được cài đặt mặc định và được sử dụng rộng rãi để quản lý máy chủ, sao lưu dữ liệu, chạy tập lệnh theo lịch trình và nhiều ứng dụng khác.
Cách thức hoạt động của Cron
Cron hoạt động bằng cách ghi các lệnh cần thực thi theo lịch trình vào tệp “crontab”. Tệp Crontab bao gồm 5 trường chính, mỗi trường xác định một khoảng thời gian cụ thể để thực thi tác vụ.
- Phút (0–59)
- Giờ (0–23)
- Ngày (1–31)
- Tháng (1–12)
- Thứ trong tuần (0–7, với 0 và 7 đều là Chủ Nhật)
Ví dụ, để thực hiện sao lưu dữ liệu vào lúc 5 giờ sáng mỗi ngày, ta có thể ghi vào crontab như sau:
0 5 * * * tar -zcf /var/backups/home.tgz /home/
Đây là một trong những tính năng quan trọng của Cron giúp tự động hóa các tác vụ theo lịch trình.
Ai nên sử dụng Cron?
Cron là công cụ quan trọng không chỉ dành cho quản trị viên hệ thống, mà còn hữu ích cho các nhà phát triển và bất kỳ ai cần chạy tập lệnh tự động trên máy chủ định kỳ để tối ưu hóa công việc hàng ngày.

2. Cài đặt Cron Job
Cách chỉnh sửa Crontab
Để thiết lập Cron Job, bạn cần chỉnh sửa tệp “crontab”. Trên Ubuntu, bạn có thể sử dụng lệnh sau để mở tệp crontab của người dùng hiện tại:
crontab -e
Cú pháp cơ bản của Cron Job
Mỗi dòng trong tệp crontab có định dạng như sau, gồm thời gian chạy và lệnh thực thi:
Phút Giờ Ngày Tháng Thứ Lệnh
Ví dụ, dòng lệnh sau đây sẽ tạo bản sao lưu thư mục /home/
vào lúc 5 giờ sáng mỗi ngày:
0 5 * * * tar -zcf /var/backups/home.tgz /home/
Lưu và kiểm tra Crontab
Sau khi thêm các Cron Job vào tệp crontab, bạn chỉ cần lưu lại và thoát trình soạn thảo để áp dụng thay đổi. Để kiểm tra các tác vụ đã được lên lịch, bạn có thể sử dụng lệnh sau:
crontab -l
3. Lập lịch nâng cao với Cron
Chạy tác vụ theo khoảng thời gian tùy chỉnh
Nếu bạn muốn chạy tác vụ mỗi phút hoặc mỗi 5 phút, bạn có thể sử dụng cú pháp sau:
- Chạy mỗi phút:
* * * * * /path/to/script.sh
- Chạy mỗi 5 phút:
*/5 * * * * /path/to/script.sh
Chạy vào ngày hoặc giờ cụ thể
Nếu bạn muốn chạy một tập lệnh vào một ngày cụ thể trong tuần, bạn có thể chỉ định trường ngày trong tuần. Ví dụ, để chạy tập lệnh vào 2:15 sáng mỗi thứ Hai, sử dụng cú pháp sau:
15 2 * * 1 /path/to/script.sh
4. Xử lý lỗi và khắc phục sự cố
Các vấn đề phổ biến và cách khắc phục
Tác vụ không chạy
Nếu Cron Job không chạy, hãy kiểm tra các điểm sau:
- Quyền thực thi: Kiểm tra xem tệp hoặc tập lệnh có quyền thực thi không.
- Đường dẫn đầy đủ: Biến môi trường
$PATH
trong Cron khác với shell thông thường, vì vậy hãy sử dụng đường dẫn đầy đủ đến tập lệnh.
/usr/bin/python3 /path/to/script.py
Kiểm tra nhật ký lỗi
Kết quả thực thi Cron Job và lỗi (nếu có) được ghi vào tệp /var/log/syslog
. Để kiểm tra lý do tại sao một tác vụ không chạy, hãy xem nhật ký hệ thống bằng lệnh sau:
grep CRON /var/log/syslog

5. Cân nhắc về bảo mật
Kiểm soát quyền truy cập của người dùng
Để giới hạn người dùng có thể thiết lập và chạy Cron Job, bạn có thể sử dụng hai tệp /etc/cron.allow
và /etc/cron.deny
. Nếu bạn thêm tên người dùng vào /etc/cron.allow
, chỉ những người dùng đó mới có quyền tạo Cron Job.
echo "user_name" >> /etc/cron.allow
Bảo mật đăng nhập và Cron Job
Khi chạy Cron Job, bạn có thể gặp các lỗi xác thực nếu tập lệnh yêu cầu mật khẩu hoặc quyền truy cập SSH. Để tránh vấn đề này, bạn có thể sử dụng khóa SSH tự động hoặc phương pháp quản lý mật khẩu an toàn.
6. Sử dụng Anacron: Dành cho các tác vụ không thường xuyên
Anacron là gì?
Anacron là một trình lập lịch dành cho các hệ thống không chạy liên tục 24/7. Nếu một nhiệm vụ bị bỏ lỡ do hệ thống tắt máy, Anacron sẽ đảm bảo nhiệm vụ đó được thực hiện ngay khi máy tính được bật lại. Điều này rất hữu ích cho máy tính cá nhân và laptop.
7. Ví dụ thực tế về Cron Job
Tự động sao lưu dữ liệu
Dưới đây là một Cron Job giúp sao lưu thư mục /home/
mỗi ngày vào lúc 2 giờ sáng, với tên tệp sao lưu chứa ngày tháng.
0 2 * * * tar -zcf /var/backups/home_backup_$(date +%Y-%m-%d).tgz /home/
8. Kết luận
Bằng cách sử dụng Cron và Anacron, bạn có thể tự động hóa các tác vụ định kỳ, giúp tăng cường độ tin cậy của hệ thống. Nếu được thiết lập đúng cách, hai công cụ này có thể giúp giảm chi phí vận hành và đảm bảo các công việc bảo trì quan trọng được thực hiện tự động. Hãy thử áp dụng chúng vào hệ thống của bạn để trải nghiệm hiệu quả mà chúng mang lại.