Skip to content

CronJob ​

Tổng quan ​

CronJob giúp máy chủ tự chạy một lệnh theo lịch, ví dụ chạy bộ lập lịch của Laravel mỗi phút, gọi WP-Cron của WordPress mỗi 5 phút hay dọn tệp tạm mỗi đêm. Bạn chỉ cần nhập lệnh, chọn người dùng chạy lệnh và chọn lịch.

Tạo CronJob ​

  1. Mở máy chủ và bấm menu CronJob.
  2. Bấm nút CronJob (biểu tượng dấu cộng) ở góc trên bên phải để mở hộp thoại Thêm CronJob.
  3. Nhập lệnh cần chạy vào khung soạn thảo. Dùng đường dẫn đầy đủ cho mọi tệp và thư mục (ví dụ /home/flashpanel/example.com/artisan thay vì artisan). Bấm biểu tượng Kịch bản tùy chỉnh ở góc khung để chèn một lệnh đã lưu trong Scripts.
  4. Ở ô User, chọn người dùng hệ thống sẽ chạy lệnh. Thông thường hãy chọn người dùng sở hữu website (ví dụ flashpanel); chỉ chọn root khi lệnh cần quyền quản trị hệ thống.
  5. Điền Description (không bắt buộc, tối đa 100 ký tự) để dễ nhận biết công việc.
  6. Đặt lịch ở phần Công thức hẹn giờ (xem bên dưới).
  7. Bấm Thêm CronJob.

Đặt lịch chạy ​

  • Bấm Mẫu để chọn nhanh một lịch có sẵn, ví dụ Every Minute (mỗi phút), Every 5 Minutes, Hourly (đầu mỗi giờ), Daily at Midnight (0 giờ hằng ngày), Weekly (Sunday), Monthly (1st).
  • Hoặc tự điền 5 ô Phút, Giờ, Ngày trong tháng, Tháng, Thứ trong tuần. Dưới mỗi ô có gợi ý giá trị hợp lệ.
  • Khung phía trên các ô diễn giải lịch bằng lời. Khung chuyển màu đỏ nếu biểu thức không hợp lệ.
  • Để lệnh chạy một lần mỗi khi máy chủ khởi động, nhập @reboot vào ô Phút.

Xem Cron Job để hiểu đầy đủ cú pháp biểu thức cron.

Quản lý CronJob ​

Bảng CronJob hiển thị ID, Description, Cron (di chuột lên để xem diễn giải) và User. Bấm mũi tên ở đầu dòng, hoặc bất kỳ chỗ nào trên dòng, để xem toàn bộ lệnh.

Các nút ở cột Hành động:

  • Chạy (biểu tượng tam giác): chạy lệnh ngay trong cửa sổ terminal bằng đúng người dùng đã chọn, để kiểm tra lệnh mà không cần chờ đến lịch.
  • Xem Log: mở các dòng cuối của nhật ký công việc, gồm kết quả và thông báo lỗi của các lần chạy. Log mở trong cửa sổ nổi, bạn có thể di chuyển, đổi kích thước hoặc thu nhỏ cửa sổ, màu sắc do chương trình ghi ra được giữ nguyên. Chọn Số dòng cần xem, bật Tự động làm mới để tải lại mỗi 5 giây, hoặc bấm nút làm mới để tải lại một lần.
  • Sửa CronJob: mở lại hộp thoại để chỉnh sửa, rồi bấm Cập nhật CronJob.
  • Biểu tượng thùng rác: xóa công việc sau khi xác nhận.

CronJob do hệ thống tạo

Một số tính năng tự tạo CronJob, ví dụ lịch Dọn dẹp hệ thống ([FlashPanel] Auto Cleanup System). Với các CronJob này, bạn chỉ đổi được lịch chạy và mô tả, không sửa được lệnh và người dùng.

Ví dụ ​

Bộ lập lịch Laravel ​

Chạy lập lịch tác vụ của Laravel mỗi phút. Thay example.com bằng thư mục website của bạn.

  • Lệnh:

    bash
    php /home/flashpanel/example.com/artisan schedule:run
  • User: flashpanel

  • Lịch: Every Minute (* * * * *)

WP-Cron của WordPress ​

Gọi WP-Cron mỗi 5 phút để các tác vụ hẹn giờ của WordPress chạy đúng giờ, kể cả khi website ít người truy cập.

  • Lệnh:

    bash
    curl -s https://example.com/wp-cron.php?doing_wp_cron > /dev/null
  • User: flashpanel

  • Lịch: Every 5 Minutes (*/5 * * * *)

Xóa tệp nhật ký cũ của website ​

Xóa các tệp .log cũ hơn 14 ngày trong thư mục nhật ký của ứng dụng, chạy lúc 1 giờ sáng hằng ngày.

  • Lệnh:

    bash
    find /home/flashpanel/example.com/storage/logs -name "*.log" -mtime +14 -delete
  • User: flashpanel

  • Lịch: 0 1 * * *

Lệnh cần quyền root

Các lệnh tác động tới toàn hệ thống, như cập nhật gói (apt-get upgrade) hay xóa tệp trong /var/log, chỉ chạy được với User root và có thể làm hỏng máy chủ nếu viết sai. Với việc dọn nhật ký và cache hệ thống, hãy dùng tiện ích Dọn dẹp hệ thống thay vì tự viết CronJob. Luôn bấm Chạy để thử lệnh trước khi để nó chạy theo lịch.

Khắc phục sự cố ​

Nếu CronJob không chạy như mong muốn:

  1. Bấm Xem Log để đọc thông báo lỗi của lần chạy gần nhất.
  2. Bấm Chạy để thử lệnh ngay và xem kết quả trực tiếp.
  3. Kiểm tra lệnh dùng đường dẫn đầy đủ. CronJob không chạy trong thư mục website, nên php artisan schedule:run sẽ lỗi, còn php /home/flashpanel/example.com/artisan schedule:run thì đúng.
  4. Kiểm tra User đã chọn có quyền đọc/ghi các tệp mà lệnh dùng tới.
  5. Di chuột lên biểu thức ở cột Cron để chắc chắn lịch chạy đúng như bạn muốn.