Hướng dẫn xử lý sự cố cron trên HiTechCloud
Đây là hướng dẫn xử lý sự cố chung cho các tác vụ cron trên HiTechCloud.
1) Cron hoạt động thế nào trong HiTechCloud
Trong HiTechCloud:
- Cron KHÔNG chạy trực tiếp trên host như crontab Linux truyền thống.
- Mỗi người dùng có container cron riêng.
- Tác vụ chạy bên trong một container được chỉ định (ví dụ
openlitespeed,nginx,php, v.v.). - Tác vụ cron được khai báo trong
/home/USERNAME/crons.ini, không phải trong/etc/crontab.
2) Bước chẩn đoán đầu tiên --- chạy lệnh thủ công (sự cố có thực sự liên quan tới cron không?)
Trước khi xử lý sự cố cron, luôn kiểm tra xem bản thân lệnh có chạy được không.
Đăng nhập qua SSH với tư cách người dùng của tài khoản (xem Khoá SSH).
Trong shell đó, chạy lệnh thủ công, ví dụ:
php -q /var/www/html/example.com/apps/console/console.php example-task
Nếu lệnh thất bại:
- Sự cố KHÔNG phải do cron
- Hãy sửa lỗi trước (thiếu extension PHP, sai đường dẫn, quyền, cấu hình ứng dụng, v.v.)
Chỉ tiếp tục xử lý sự cố cron sau khi lệnh chạy được thủ công.
3) Kiểm tra dịch vụ cron có đang chạy không
Mỗi người dùng phải có dịch vụ cron riêng đang hoạt động.
Kiểm tra trong HiTechCloud: https://hitechcloud.org/docs/panel/advanced/services/
Bạn sẽ thấy một dịch vụ cron đang chạy cho người dùng đó.
Nếu nó KHÔNG chạy, hãy khởi động thủ công (terminal):
cd /home/USERNAME && docker --context=USERNAME compose up -d cron
4) Kiểm tra định dạng tệp cron (crons.ini)
Kiểm tra tệp cron của người dùng:
cat /home/USERNAME/crons.ini
Một tác vụ đúng trông như sau:
[job-exec "example-job"]
schedule = @every 1m
container = openlitespeed
command = php -q /var/www/html/example.com/apps/console/console.php example-task
Các lỗi thường gặp
❌ Dùng đường dẫn PHP của host:
/usr/local/lsws/lsphp84/bin/php
✅ Hãy dùng PHP của container:
php
❌ Sai container:
container = web
✅ Phải khớp với container thực tế:
container = openlitespeed
5) Kiểm tra nhật ký thực thi cron (rất quan trọng)
HiTechCloud cung cấp nhật ký thực thi cho từng tác vụ.
Nhật ký tác vụ cron: https://hitechcloud.org/docs/panel/advanced/cronjobs/#logs
Tìm các dấu hiệu: - Tác vụ đã bắt đầu - Tác vụ thất bại - Lỗi PHP - Permission denied - "Container not found"
6) Kiểm tra đường dẫn bên trong container
Đường dẫn bên trong Docker có thể khác đường dẫn trên host.
Kiểm tra bên trong container:
docker --context USERNAME exec -it CONTAINER bash
ls /var/www/html
Xác nhận rằng:
/var/www/html/example.com/
thực sự tồn tại bên trong container.
7) Xem nhật ký của container cron
Nếu tác vụ vẫn không chạy, hãy xem chính container cron:
docker --context USERNAME logs cron
Tìm các dấu hiệu:
- Lỗi của bộ lập lịch
- Sự cố khởi động container
- Sự cố về quyền
8) Kiểm tra chọn đúng container
Đảm bảo tác vụ dùng đúng container:
Loại ứng dụng Container phù hợp
OpenLiteSpeed + PHP openlitespeed hoặc php
Nginx + PHP nginx hoặc php
Container độc lập CONTAINER_NAME
Nếu chọn sai → tác vụ thất bại.
9) Mẫu cron chung chạy được
Với một ứng dụng host tại example.com:
[job-exec "task-1"]
schedule = @every 1m
container = openlitespeed
command = php -q /var/www/html/example.com/apps/console/console.php task-1
[job-exec "task-2"]
schedule = @every 5m
container = openlitespeed
command = php -q /var/www/html/example.com/apps/console/console.php task-2
[job-exec "task-hourly"]
schedule = @hourly
container = openlitespeed
command = php -q /var/www/html/example.com/apps/console/console.php hourly
[job-exec "task-daily"]
schedule = @daily
container = openlitespeed
command = php -q /var/www/html/example.com/apps/console/console.php daily
10) Cây quyết định xử lý sự cố nhanh
❓ "Cron hoàn toàn không chạy"
Kiểm tra: - Dịch vụ cron có đang chạy không? → trang Dịch vụ\
- Có container cron không? →
docker --context USERNAME ps | grep cron\ - Tệp
/home/USERNAME/crons.inicó tồn tại không?
❓ "Cron chạy nhưng lệnh thất bại"
Kiểm tra: - Chạy thủ công bên trong container trước\
- Xem nhật ký cron trong HiTechCloud\
- Xem nhật ký container
❓ "Cron chạy nhưng ứng dụng vẫn báo lỗi"
Kiểm tra: - Nhật ký ứng dụng trong /var/www/html/example.com/.../logs/\
- Quyền tệp bên trong container
- 1) Cron hoạt động thế nào trong HiTechCloud
- 2) Bước chẩn đoán đầu tiên --- chạy lệnh thủ công (sự cố có thực sự liên quan tới cron không?)
- Nếu lệnh thất bại:
- 3) Kiểm tra dịch vụ cron có đang chạy không
- Nếu nó KHÔNG chạy, hãy khởi động thủ công (terminal):
- 4) Kiểm tra định dạng tệp cron (
crons.ini) - Các lỗi thường gặp
- 5) Kiểm tra nhật ký thực thi cron (rất quan trọng)
- 6) Kiểm tra đường dẫn bên trong container
- 7) Xem nhật ký của container cron
- 8) Kiểm tra chọn đúng container
- 9) Mẫu cron chung chạy được
- 10) Cây quyết định xử lý sự cố nhanh
- ❓ "Cron hoàn toàn không chạy"
- ❓ "Cron chạy nhưng lệnh thất bại"
- ❓ "Cron chạy nhưng ứng dụng vẫn báo lỗi"