Phiên SSH chết cùng VPN: tmux hay trình chạy tác vụ?
Đường hầm kết nối lại không làm sống lại socket SSH cũ. Hãy quyết định công việc cần một phiên terminal mà bạn kết nối lại, hay một tác vụ có kết quả được ghi lại.
Chỉ báo VPN chuyển xanh, tuyến đường trở lại, nhưng cửa sổ SSH bạn để mở không bao giờ trả lại dấu nhắc. Khôi phục tuyến đường không khôi phục cuộc trò chuyện TCP đã dùng nó, nên mọi thứ gõ vào cửa sổ đó đều mất. Nếu mối lo thật sự là bộ đệm của trình soạn thảo hay một cuộc di trú dài, giải pháp là ngừng buộc công việc đó vào một kết nối. tmux và một trình chạy tác vụ giải quyết hai nửa khác nhau của vấn đề đó.
VPN kết nối lại không tiếp tục socket
TCP không có khái niệm tiếp tục sau khi địa chỉ thay đổi. Kết nối SSH được nhận diện bằng cả hai đầu, và khi đường hầm được dựng lại, địa chỉ cục bộ có thể thay đổi và socket cũ đã chết. Máy chủ nhận ra điều đó cuối cùng, nhưng terminal của bạn nhận ra ngay lập tức.
Keepalive phía máy khách phát hiện đối tác đã chết sớm hơn. Nó không mang phiên trở lại, và không thể phục hồi một lệnh đang chạy. Keepalive là một bộ phát hiện, không phải công cụ phục hồi. Nó không nói gì về việc lệnh từ xa có sống sót hay không.
Đặt công việc trên máy chủ từ xa
Tạo phiên trên máy chủ từ xa, không phải trên laptop. Kết nối như thường lệ, khởi động tmux ở đó và chạy trình soạn thảo hoặc cuộc di trú bên trong nó. Tách ra bằng tiền tố mặc định và phiên vẫn chạy trong khi kết nối SSH biến mất. Khởi động tmux cục bộ bảo vệ shell của bạn khỏi cửa sổ bị đóng, không bảo vệ lệnh từ xa khỏi đường hầm đã chết.
ssh [email protected]
tmux new-session -s office-workKhi VPN trở lại, mở một kết nối SSH mới tới cùng máy chủ và kết nối lại theo tên. Đối tượng bền vững là phiên, không phải kết nối. Đặt cho nó một cái tên mà bạn vẫn nhận ra sau một tuần.
tmux so với trình chạy tác vụ
tmux giữ một tiến trình tương tác sống trong khi máy chủ bật. Trình chạy tác vụ hoặc trình quản lý dịch vụ giữ một tác vụ không tương tác sống, ghi lại trạng thái thoát của nó, và sống sót khi phiên SSH kết thúc hoàn toàn. Cái đầu dành cho công việc bạn theo dõi; cái sau dành cho công việc bạn lên lịch và kiểm tra sau.
Không cái nào sống sót qua lần khởi động lại trừ khi máy chủ được cấu hình để khôi phục nó. Phiên tmux chết cùng máy, và tác vụ tạm thời chết cùng lần khởi động trừ khi được đăng ký như một đơn vị. Chọn theo điều mà công việc phải sống lâu hơn.
Cả hai cách đều cần một bản ghi mà bạn có thể đọc sau khi kết nối lại. Không có nó, bạn biết tiến trình tồn tại nhưng không biết nó đã làm gì. Ghi đường dẫn của bản ghi bên cạnh tên phiên.
Quyết định theo điều phải sống sót
Quyết định theo điều tệ nhất có thể xảy ra nếu công việc dừng giữa chừng. Một phiên trình soạn thảo mất các bộ đệm chưa lưu, điều đó khó chịu nhưng có thể phục hồi. Một cuộc di trú chỉ ghi nhận một nửa thay đổi thì không, và điều đó ủng hộ một trình chạy có kết quả được ghi lại. Nếu tác vụ mang tính tương tác và dài, tmux cùng một bản ghi viết ra thường là đủ.
systemd-run --user --unit=migrate-customers --collect ./migrate.shDù bạn chọn gì, hãy xem kết quả đã ghi lại trước khi chạy lại bất cứ thứ gì. Thiếu dòng cuối cho bạn biết laptop đã thấy gì, không phải máy chủ đã ghi nhận gì. Chính sự khác biệt đó là lý do giữ công việc ngoài kết nối ngay từ đầu, và mô hình tách ra và kết nối lại là phiên bản nhỏ nhất của nó.