Cron job là gì? Hướng dẫn tự động hóa tác vụ trên Linux
Tìm hiểu cron job là gì, cách đọc cú pháp thời gian và tạo cron job Linux. Bài viết hướng dẫn lên lịch tác vụ VPS, kiểm tra kết quả và xử lý lỗi thường gặp.
Khi quản trị máy chủ, bạn có thể cần sao lưu dữ liệu mỗi đêm, dọn tệp tạm hằng tuần hoặc chạy một lệnh xử lý dữ liệu theo giờ. Thay vì đăng nhập và thực hiện thủ công, bạn có thể dùng cron để lên lịch cho các tác vụ này. Bài viết dưới đây giải thích cron job là gì và hướng dẫn tạo cron job Linux theo từng bước, kèm ví dụ để bạn áp dụng trên VPS.
Cron job là gì?
Máy chủ Linux và biểu tượng đồng hồ minh họa cron job
Cron job là một tác vụ được hệ điều hành Linux tự động thực thi theo lịch đã thiết lập. Cron là dịch vụ lập lịch chạy nền, còn cron job là lệnh hoặc tập lệnh được giao cho dịch vụ này thực hiện vào thời điểm cụ thể.
Bạn có thể dùng cron để:
Sao lưu cơ sở dữ liệu hoặc tệp website định kỳ.
Chạy chương trình xử lý dữ liệu theo giờ hoặc theo ngày.
Xóa tệp tạm, nhật ký cũ để quản lý dung lượng lưu trữ.
Gửi báo cáo, đồng bộ dữ liệu hoặc gọi một địa chỉ URL theo lịch.
Thực thi lệnh bảo trì mà không cần thao tác thủ công mỗi lần.
Cron phù hợp với những tác vụ có lịch lặp lại và có thể chạy bằng lệnh. Với công việc cần xử lý ngay khi có sự kiện, hoặc phụ thuộc vào thời gian chạy của một tác vụ khác, bạn nên cân nhắc giải pháp phù hợp hơn thay vì chỉ dựa vào lịch cron.
Cú pháp cron và cách đọc lịch chạy
Minh họa năm trường thời gian trong cú pháp cron
Mỗi dòng trong crontab thường gồm năm trường thời gian, theo sau là lệnh cần chạy:
* * * * * lenh-can-thuc-thi
│ │ │ │ │
│ │ │ │ └── Thứ trong tuần (0–7, Chủ nhật có thể là 0 hoặc 7)
│ │ │ └──── Tháng (1–12)
│ │ └────── Ngày trong tháng (1–31)
│ └──────── Giờ (0–23)
└────────── Phút (0–59)
Dòng đầu chạy mỗi 10 phút; dòng thứ hai chạy lúc 02:00 hằng ngày; dòng thứ ba chạy lúc 08:30 từ thứ Hai đến thứ Sáu; dòng cuối chạy vào 00:00 ngày đầu mỗi tháng. Hãy chú ý lịch được diễn giải theo múi giờ máy chủ hoặc cấu hình cron đang sử dụng. Nếu thời gian chạy quan trọng, hãy kiểm tra múi giờ trước khi đưa lịch vào vận hành.
Cách tạo cron job Linux bằng crontab
Quản trị viên thiết lập tác vụ tự động trên VPS Linux
Crontab là bảng chứa các lịch cron của người dùng. Trên máy chủ Linux, nên tạo lịch bằng đúng tài khoản cần chạy tác vụ để hạn chế quyền không cần thiết.
1. Kiểm tra dịch vụ cron
Tùy bản phân phối, dịch vụ có thể mang tên cron hoặc crond. Bạn có thể kiểm tra trạng thái bằng một trong các lệnh sau:
systemctl status cron
systemctl status crond
Nếu hệ thống báo không tìm thấy dịch vụ, hãy kiểm tra tên dịch vụ theo bản phân phối Linux đang dùng. Việc bật hoặc cài đặt dịch vụ có thể cần quyền quản trị.
2. Mở crontab để chỉnh sửa
Dùng lệnh sau để mở crontab của tài khoản hiện tại:
crontab -e
Nếu được hỏi, hãy chọn trình soạn thảo phù hợp. Thêm lịch chạy vào dòng mới, lưu tệp rồi thoát. Để xem những lịch đã thiết lập, dùng:
crontab -l
Lệnh crontab -e chỉ chỉnh lịch của người dùng hiện tại. Lệnh sudo crontab -e chỉnh lịch của tài khoản quản trị, còn các tệp trong /etc/cron.d/ thường dành cho cấu hình hệ thống và có quy tắc riêng. Tránh dùng quyền cao hơn mức cần thiết.
3. Thêm lệnh và đường dẫn đầy đủ
Ví dụ chạy tập lệnh sao lưu mỗi ngày lúc 02:00:
0 2 * * * /bin/bash /home/admin/backup.sh
Trong cron, môi trường chạy thường tối giản hơn phiên đăng nhập thông thường. Vì vậy, hãy ưu tiên đường dẫn tuyệt đối cho chương trình, tập lệnh và tệp liên quan. Có thể tìm vị trí chương trình bằng which, chẳng hạn which php hoặc which python3, rồi thay đường dẫn trong lịch cho phù hợp.
Nếu tập lệnh cần chạy trong một thư mục cụ thể, hãy chuyển thư mục ngay trong lệnh:
Dấu && giúp lệnh phía sau chỉ chạy khi thao tác chuyển thư mục thành công. Kiểm tra cú pháp và thử chạy lệnh trực tiếp trong terminal trước khi đưa vào cron.
Ví dụ lên lịch tác vụ VPS thực tế
Khi lên lịch tác vụ VPS, hãy xác định rõ ba điều: lệnh cần chạy, tần suất phù hợp và nơi lưu kết quả. Sau đây là một số mẫu có thể điều chỉnh theo môi trường của bạn.
Lịch này chạy vào phút thứ 0 của mỗi giờ. Phần >> ghi thêm đầu ra vào tệp nhật ký, còn 2>&1 chuyển cả thông báo lỗi vào cùng tệp. Hãy tạo thư mục nhật ký trước và bảo đảm tài khoản chạy cron có quyền ghi.
Lệnh mẫu xóa tệp trong thư mục chỉ định đã cũ hơn 7 ngày và chạy vào 04:00 Chủ nhật. Trước khi dùng -delete, hãy thử lệnh find không có phần xóa để xem danh sách tệp sẽ bị tác động. Điều này giúp giảm nguy cơ xóa nhầm dữ liệu.
Chạy lệnh sau khi máy chủ khởi động
Một số hệ thống hỗ trợ bí danh @reboot, dùng để chạy lệnh khi cron khởi động sau khi máy chủ khởi động:
@reboot /home/admin/scripts/start-worker.sh
Tác vụ có thể chạy trước khi một dịch vụ hoặc kết nối cần thiết sẵn sàng. Nếu tập lệnh phụ thuộc vào mạng, cơ sở dữ liệu hoặc ứng dụng khác, hãy thiết kế bước kiểm tra và chờ phù hợp.
Kiểm tra, ghi nhật ký và xử lý lỗi cron
Một cron job có thể được lưu nhưng vẫn không hoạt động như mong đợi. Sau khi thêm lịch, hãy kiểm tra crontab bằng crontab -l, chạy thử lệnh thủ công dưới đúng tài khoản và theo dõi nhật ký của hệ thống. Tùy bản phân phối, thông tin cron có thể nằm trong nhật ký hệ thống hoặc nhật ký dịch vụ; có thể xem bằng journalctl với tên dịch vụ tương ứng.
Các lỗi thường gặp gồm:
Sai cú pháp thời gian: Đếm đủ năm trường trước lệnh và kiểm tra đúng thứ tự phút, giờ, ngày, tháng, thứ.
Dùng đường dẫn tương đối: Thay bằng đường dẫn tuyệt đối cho chương trình, tập lệnh và tệp đầu vào.
Thiếu quyền thực thi: Cấp quyền phù hợp cho tập lệnh, ví dụ chmod +x /home/admin/backup.sh, hoặc gọi rõ trình thông dịch như /bin/bash.
Khác môi trường khi chạy: Cron không nhất thiết nạp các biến môi trường trong hồ sơ đăng nhập. Khai báo biến cần thiết trong crontab hoặc tập lệnh, đồng thời tránh ghi thông tin bí mật vào nơi người khác có thể đọc.
Không biết kết quả chạy: Chuyển đầu ra vào tệp nhật ký bằng >> file.log 2>&1, sau đó kiểm tra cả thông báo thành công lẫn lỗi.
Tác vụ chạy chồng lấn: Nếu một lần chạy kéo dài lâu hơn chu kỳ lặp, nhiều tiến trình có thể cùng hoạt động. Cân nhắc dùng cơ chế khóa hoặc điều chỉnh tần suất.
Không nên đưa mật khẩu hoặc khóa truy cập nhạy cảm trực tiếp vào dòng lệnh nếu có thể tránh. Hạn chế quyền đọc crontab và tệp cấu hình, đồng thời chỉ cho tác vụ quyền cần thiết để hoàn thành công việc.
Khi nào nên dùng cron trên VPS?
Cron hữu ích khi bạn cần chủ động kiểm soát môi trường Linux và chạy lệnh theo lịch, chẳng hạn sao lưu, xử lý dữ liệu hoặc bảo trì ứng dụng. Với website hoặc ứng dụng chạy trên VPS, bạn có thể xây dựng lịch riêng theo nhu cầu, miễn là tài nguyên máy chủ và thời gian thực thi đáp ứng được tác vụ.
Nếu đang tìm môi trường để triển khai các tác vụ định kỳ trên Linux, VibeVPS có các gói VPS AMD EPYC Gen 3 và VPS Platinum Gen 2 từ 81.000đ/tháng. Hãy chọn cấu hình dựa trên khối lượng công việc thực tế, mức sử dụng bộ nhớ và dung lượng lưu trữ cần thiết.
Tổng kết
Cron job giúp tự động hóa các lệnh lặp lại trên Linux, từ xử lý dữ liệu đến sao lưu và dọn dẹp tệp. Để tạo cron job Linux ổn định, hãy nắm cú pháp thời gian, dùng đường dẫn đầy đủ, thử lệnh trước, ghi nhật ký và kiểm tra quyền chạy. Bắt đầu với một tác vụ đơn giản, theo dõi kết quả rồi điều chỉnh lịch cho phù hợp. Nếu cần một môi trường Linux để lên lịch tác vụ VPS, bạn có thể tham khảo các gói VPS của VibeVPS và chọn cấu hình sát với nhu cầu.
Lỗi 403 Forbidden khiến máy chủ từ chối yêu cầu truy cập website. Bài viết hướng dẫn quản trị viên kiểm tra và xử lý lỗi theo từng nguyên nhân phổ biến.
Email theo tên miền giúp doanh nghiệp tạo địa chỉ thư điện tử mang thương hiệu riêng, chuyên nghiệp và dễ quản lý. Tìm hiểu lợi ích, những thứ cần chuẩn bị và các bước thiết lập cơ bản.