Cron job giúp VPS tự chạy backup, dọn log hoặc script theo lịch. Hướng dẫn này giải thích cú pháp, cách tạo và kiểm tra cron an toàn.
Quản lý máy chủ đòi hỏi sự kiên nhẫn. Bạn không thể thức dậy lúc 2 giờ sáng mỗi ngày để sao lưu dữ liệu website. Giải pháp thực tế là tự động hóa. Nếu đang quản trị một máy chủ Linux trên cloudmoon.net, bạn nên biết cron job là gì.
Hãy xem cron job giống như một cuốn lịch hẹn tự động. Nó là một tiện ích tích hợp sẵn trên hệ điều hành Linux. Chức năng duy nhất của nó là chạy các lệnh hoặc tập lệnh (script) một cách tự động theo đúng thời gian bạn đã định trước.
Khi nhu cầu quản trị tăng lên và bạn muốn chạy tool tự động trên VPS, cron job chính là công cụ nền tảng, cơ bản và ổn định nhất để xử lý các công việc lặp đi lặp lại.
Người mới làm quen với máy chủ thường nhầm lẫn giữa ba thuật ngữ này. Việc phân biệt rõ chức năng của từng thành phần sẽ giúp bạn thao tác chuẩn xác hơn.
Mỗi dòng cấu hình lịch trình trong crontab luôn bắt đầu bằng năm trường thời gian, theo sau là lệnh cần thực thi. Cấu trúc chuẩn xác là: * * * * * lệnh_cần_chạy.
Năm dấu sao đại diện cho năm đơn vị thời gian, đếm theo thứ tự từ trái qua phải như sau:
Để lập lịch linh hoạt, bạn không chỉ nhập số mà còn dùng các ký hiệu đặc biệt:
0,30 * * * * nghĩa là chạy vào phút thứ 0 và phút thứ 30.0 9-17 * * * nghĩa là chạy mỗi giờ tròn, từ 9 giờ sáng đến 5 giờ chiều.*/15 * * * * là mỗi 15 phút.@reboot chạy sau khi khởi động; @daily, @hourly và @weekly lần lượt là mỗi ngày, giờ và tuần.Trước khi lên lịch cho một tác vụ, tập lệnh của bạn phải hoạt động trơn tru. Bạn cần kết nối vào máy chủ, thường qua giao thức bảo mật (tìm hiểu thêm SSH là gì) để cấu hình.
Đầu tiên, phải cấp quyền thực thi cho tập lệnh. Bạn dùng lệnh: chmod +x /duong/dan/toi/script.sh.
Nguyên tắc cốt lõi cần nhớ: môi trường chạy của cron rất tối giản. Nó không tự động tải các biến môi trường (như PATH) giống như lúc bạn đang trực tiếp gõ phím. Do đó, hệ thống thường không biết lệnh php, python hay curl nằm ở đâu.
Ghi đủ đường dẫn thì cron hết cớ để im lặng. Thay vì viết php script.php, hãy tìm đường dẫn bằng which php, chẳng hạn /usr/bin/php /var/www/script.php.
Cách quản lý lịch trình phổ biến nhất là chỉnh sửa tệp crontab của người dùng hiện hành.
Để thêm hoặc sửa tác vụ, gõ crontab -e. Trên Ubuntu/Debian cài đầy đủ, đây là cách chuẩn; bản minimal hoặc container có thể chưa có gói cron. Nếu hỏi trình soạn thảo, chọn nano; nếu lỡ vào vi, nhấn Esc, gõ :wq rồi Enter để lưu.
Ví dụ, bạn muốn chạy một lệnh sao lưu lúc 2 giờ sáng mỗi ngày:
0 2 * * * /bin/bash /home/user/backup.sh >> /home/user/logs/backup.log 2>&1
Để kiểm tra lại các tác vụ đã đặt, bạn gõ: crontab -l. Lệnh này sẽ in toàn bộ nội dung tệp crontab lên màn hình để rà soát.
Vì tiến trình chạy ngầm, lỗi không hiện trên màn hình. >> gom phần in bình thường, còn 2>&1 gom thêm phần báo lỗi vào cùng tệp log. Trong crontab, ký hiệu % phải escape; ví dụ >> /home/user/log-$(date +\%F).log 2>&1.
Đôi khi bạn đã làm đúng mọi bước nhưng tác vụ vẫn không nhúc nhích. Khi cron không chạy, hãy rà soát cẩn thận theo trình tự sau.
Đầu tiên, xem service: systemctl status cron trên Ubuntu/Debian hoặc systemctl status crond trên RHEL/CentOS/AlmaLinux. Nếu tắt, dùng sudo systemctl start cron && sudo systemctl enable cron hoặc thay cron bằng crond.
Nhìn log trước đã: Ubuntu thường dùng /var/log/syslog hoặc journalctl -u cron; họ RHEL thường dùng /var/log/cron hoặc journalctl -u crond.
Thứ ba, rà soát đường dẫn tuyệt đối. Như đã nhắc ở trên, đây là nguyên nhân gây lỗi cao nhất.
Thứ tư, kiểm tra múi giờ máy chủ bằng lệnh date. Có thể máy chủ đang chạy theo múi giờ quốc tế UTC, trong khi bạn lại tính toán giờ chạy theo múi giờ Việt Nam.
Cuối cùng, lưu ý dòng cuối nên có ký tự xuống dòng. Trình chỉnh sửa thường tự thêm, nhưng tệp viết tay thiếu newline có thể bị cron cảnh báo hoặc bỏ qua.
Việc lập lịch được chia thành nhiều mức độ, phụ thuộc vào nơi bạn khai báo.
User crontab: Là loại được tạo ra khi dùng lệnh crontab -e. Mỗi người dùng (kể cả người dùng root) có một tệp riêng. Tác vụ sẽ tự động chạy dưới quyền của chính người dùng sở hữu tệp đó.
System crontab: Tệp này thường nằm ở /etc/crontab và trong thư mục /etc/cron.d. Cấu trúc của nó có thêm một trường thứ sáu dành cho việc khai báo tên người dùng (user). Cú pháp chuẩn là * * * * * username lệnh_cần_chạy. Nó được dùng cho các tác vụ quản trị hệ thống.
Cron hợp với việc chạy đúng giờ rồi thôi. Nếu script phải đợi MySQL hoặc network sẵn sàng, cần retry và nhật ký chi tiết, hãy cân nhắc systemd timer.
Tự động hóa mang lại sự rảnh rang nhưng đi kèm rủi ro nếu thiết lập sai. Bạn cần tuân thủ các quy tắc an toàn cơ bản.
flock -n /tmp/backup.lock /home/user/backup.sh để tránh job chạy chồng./home/user/.db.env và chạy chmod 600 /home/user/.db.env.Bạn cũng nên giám sát tài nguyên VPS để dãn lịch khi máy bắt đầu quá tải.
Không. Đơn vị thời gian nhỏ nhất mà tiện ích này hỗ trợ là 1 phút. Dịch vụ daemon sẽ kiểm tra và kích hoạt các tác vụ mỗi khi chuyển sang phút mới, nó không có chức năng hẹn giờ chính xác đến từng giây.
Không. Cron do daemon chạy nền, độc lập với phiên SSH. Bạn có thể thoát SSH; lịch vẫn được daemon gọi khi tới giờ.
Bởi vì giới hạn là 1 phút, bạn cần dùng một thủ thuật. Bạn tạo hai lệnh chạy cùng lúc trong crontab. Lệnh đầu tiên chạy ngay lập tức. Lệnh thứ hai bạn chèn thêm chữ sleep 30 phía trước để hệ thống trì hoãn 30 giây rồi mới chạy.
Không. Mọi cấu hình crontab đều được lưu trữ an toàn thành tệp tin trên ổ cứng. Khi máy chủ khởi động lại, dịch vụ daemon sẽ tự bật và tiếp tục bám sát các lịch trình này mà không bị gián đoạn.
Nếu script bị treo, xóa dòng crontab không dừng tiến trình đang chạy. Dùng pgrep -af backup.sh để tìm PID, rồi kill PID để buộc nó dừng.
Nếu bạn sử dụng máy chủ có cài đặt sẵn các bảng điều khiển (control panel) như cPanel, DirectAdmin, thì không bắt buộc. Các bảng điều khiển này đều có giao diện đồ họa để bạn điền số vào ô. Hệ thống tự động dịch nó thành cú pháp dòng lệnh bên dưới.
Tự động hóa không chỉ giúp tiết kiệm công sức thao tác mà còn loại trừ rủi ro do con người quên việc. Nắm vững cron job là bạn đã làm chủ được một kỹ năng không thể thiếu để duy trì máy chủ hoạt động trơn tru.
Để chạy tác vụ ổn định, hãy chọn gói Cloud VPS có tài nguyên phù hợp và quyền quản trị cần thiết. Cron vẫn phụ thuộc vào script, quyền truy cập và tình trạng máy chủ, nên hãy theo dõi log thay vì mặc định mọi lần chạy đều thành công.
Nếu dùng WordPress, bạn có thể thay cơ chế wp-cron chạy theo lượt truy cập bằng một cron thật gọi wp-cron.php theo lịch. Cách này phù hợp khi website ít người truy cập, nhưng cần kiểm tra quyền và đường dẫn trước khi bật.
Chưa có bình luận nào. Hãy là người đầu tiên!