
Trả lời nhanh: Bốn nguyên nhân làm tác vụ dài bị đứt: mất kết nối SSH khiến tiến trình bị dừng theo, hết RAM khiến hệ thống tắt tiến trình, ổ đầy khiến ghi log thất bại, và agent lặp vô hạn khi gặp lỗi nó không tự thoát ra được. Cách xử lý: chạy trong tmux để phiên sống độc lập với kết nối, đặt swap dự phòng, theo dõi dung lượng ổ, và luôn đặt giới hạn số vòng lặp cho mỗi tác vụ.
Giao tác vụ lúc mười một giờ đêm, sáng dậy mở ra thấy phiên đã chết từ lúc một giờ sáng. Cả đêm mất trắng, và điều khó chịu là nguyên nhân thường rất tầm thường.
- Mất kết nối SSH làm chết tiến trình nếu không chạy trong tmux.
- Hết RAM là nguyên nhân âm thầm nhất, hệ thống tắt tiến trình mà không báo rõ.
- Ổ đầy khiến ghi log thất bại và agent dừng giữa chừng.
- Luôn đặt giới hạn vòng lặp, agent gặp lỗi lạ có thể thử lại hàng trăm lần suốt đêm.
Bốn nguyên nhân và cách chặn từng cái
Mất kết nối SSH
Đóng máy tính hoặc rớt mạng là tiến trình con bị dừng theo. Giải pháp chuẩn là chạy trong tmux, phiên sống độc lập với kết nối của bạn.
tmux new -s codex
# chạy tác vụ ở đây, rồi nhấn Ctrl+b rồi d để thoát ra
tmux attach -t codex # quay lại xem tiến độHết RAM
Đây là nguyên nhân khó chịu nhất vì không có thông báo rõ ràng. Kiểm tra bằng:
dmesg | grep -i "killed process"Thấy dòng nào nghĩa là hệ thống đã tắt tiến trình vì hết bộ nhớ. Cách chữa: tăng RAM, hoặc tối thiểu là đặt swap dự phòng để có đệm.
Ổ đầy
Log và file trung gian phình rất nhanh khi agent chạy hàng trăm vòng. Ổ đầy thì mọi thao tác ghi đều lỗi.
df -h # kiểm tra trước khi giao tác vụ dàiLặp vô hạn
Gặp lỗi nó không hiểu, agent có thể thử đi thử lại mãi. Đặt giới hạn số vòng cho mỗi tác vụ là cách chặn đơn giản nhất, đồng thời tránh hoá đơn gọi API tăng bất ngờ.
Chuẩn bị trước khi giao tác vụ qua đêm
- Kiểm tra dung lượng ổ còn ít nhất 20 phần trăm.
- Kiểm tra RAM còn dư và swap đã bật.
- Chạy trong tmux, đặt tên phiên dễ nhớ.
- Ghi log ra file để sáng đọc lại được toàn bộ quá trình.
- Đặt giới hạn vòng lặp và hạn mức chi tiêu API.
- Chắc chắn có bản backup mã nguồn ở kho lưu trữ trước khi cho agent sửa nhiều file.
Theo dõi khi không ngồi trước máy
Cách đơn giản là ghi log ra file rồi xem lại:
# xem tiến độ mà không cần vào tmux
tail -f /duong/dan/log/agent.logMuốn kỹ hơn thì đặt một tiến trình nhỏ chạy mỗi vài phút ghi lại mức RAM và dung lượng ổ. Khi có sự cố, bạn nhìn vào đó là biết máy chết vì lý do gì thay vì phải đoán.
Bốn nguyên nhân treo, và cách chặn từng cái
| Nguyên nhân | Dấu hiệu | Cách chặn |
|---|---|---|
| Mất kết nối mạng tới máy chủ | Phiên chết ngay khi đóng máy tính cá nhân | Chạy trong bộ ghép màn hình, thoát ra phiên vẫn sống |
| Hết bộ nhớ, tiến trình bị hệ thống dừng | Công việc dừng giữa chừng, không báo gì | Kiểm dmesg tìm dòng báo hết bộ nhớ; thêm RAM hoặc đặt vùng nhớ tạm |
| Hết hạn mức gọi dịch vụ | Báo lỗi vượt giới hạn rồi dừng | Đặt cơ chế thử lại giãn dần, và theo dõi hạn mức trước khi chạy việc dài |
| Ổ đĩa đầy vì tệp tạm và nhật ký | Lỗi ghi tệp, hoặc treo im lặng | Đặt tác vụ dọn định kỳ, cảnh báo khi ổ còn dưới 15% |
Chuẩn bị trước khi giao việc chạy qua đêm
# 1. Chay trong bo ghep man hinh de phien khong chet theo ket noi apt install -y tmux tmux new -s codex # thoat ra: Ctrl+B roi D ; quay lai: tmux attach -t codex # 2. Ghi lai toan bo dau ra de sang mai doc lai tmux new -s codex 'lenh-cua-ban 2>&1 | tee /root/nhat-ky-$(date +%F).log' # 3. Dat vung nho tam de khong bi dung tien trinh dot ngot fallocate -l 4G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile echo '/swapfile none swap sw 0 0' >> /etc/fstab # 4. Kiem con bao nhieu o dia truoc khi bat dau df -h / && du -sh ~/.cache 2>/dev/null
Ghi nhật ký để sáng hôm sau đọc lại
- Ghi toàn bộ đầu ra ra tệp nhật ký kèm ngày trong tên. Sáng hôm sau đọc tệp là biết nó dừng ở đâu và vì sao.
- Đặt một tác vụ định kỳ ghi lại tình trạng máy mỗi 5 phút: bộ nhớ trống, tải trung bình, dung lượng ổ. Khi có sự cố, chuỗi số này cho biết chuyện gì xảy ra trước lúc chết.
- Đặt cảnh báo gửi về khi ổ đĩa hoặc bộ nhớ chạm ngưỡng, thay vì đợi phát hiện vào sáng hôm sau.
- Chia việc dài thành các chặng có điểm dừng lưu lại được, để khi hỏng chỉ phải chạy lại một chặng.
Câu hỏi thường gặp
Vì sao tác vụ dài hay bị đứt?
Bốn nguyên nhân chính: mất kết nối SSH, hết RAM, ổ đầy, và agent lặp vô hạn. Ba cái đầu đều phòng được bằng chuẩn bị trước.
tmux và screen khác nhau thế nào?
Cả hai đều giữ phiên sống khi ngắt kết nối. tmux hiện đại hơn và dễ chia cửa sổ, nhưng chọn cái nào cũng được, quan trọng là có dùng.
Làm sao biết tiến trình bị tắt vì hết RAM?
Chạy lệnh dmesg rồi tìm dòng có chữ killed process. Đó là dấu vết hệ thống để lại khi phải tắt tiến trình để cứu máy.
Nên đặt swap bao nhiêu?
Thường bằng dung lượng RAM là hợp lý làm đệm. Swap không thay được RAM thật vì chậm hơn nhiều lần, nó chỉ giúp máy không chết đột ngột.
Bài viết liên quan
- ImmuDB vs PostgreSQL: chọn DB nào cho audit log startup?
- VPS US vs VPS VN: khi nào chọn loại nào? Use case 2026
- Cách dùng VPS cho người mới: SSH, tmux, basic security (zero-to-hero)
- Proxy cho Claude Code, Cline, Aider AI agent 2026
- Setup K3s 1-node trên VPS 8GB: chơi Kubernetes không tốn nhiều
- Redis Sentinel HA: setup trên 3 VPS cho production



