Điều gì xảy ra với các tiến trình đang chạy khi tôi mất kết nối từ xa vào hộp * nix?


16

Thỉnh thoảng tôi mất kết nối SSH từ xa vào VPS của mình. Tôi sử dụng screencho các quy trình chạy dài, nhưng tôi tự hỏi điều gì sẽ xảy ra với các quy trình tôi đã chạy ngoài các quy trình chạy trong một screenphiên nếu tôi mất kết nối với hộp.

Khi tôi thiết lập lại kết nối với hộp, điều gì đã xảy ra với các quá trình bash và sshd đang chạy khi tôi mất kết nối? Hôm nay tôi bị mất kết nối liên tục và nhận thấy nhiều quá trình bash và sshd hơn bình thường.

Nếu có các quy trình treo xung quanh, tôi có cần phải giết chúng không? Làm cách nào tôi có thể xác định quy trình nào đã bị hủy khỏi phiên trước đó?

Cảm ơn cho bất kỳ trả lời!

Câu trả lời:


8

Thông thường, các quy trình sẽ chấm dứt khi ngắt kết nối, nhưng các phiên SSH cũ có thể đang chờ hết thời gian hoặc chúng có thể bị treo khi thoát , do điều kiện cuộc đua.

Bạn có lẽ nên chấm dứt các phiên cũ, mặc dù bạn không nhất thiết phải làm. Nhập ps auxvào bảng điều khiển để liệt kê các quy trình, sau đó kill PIDcho mỗi phiên treo ssh, trong đó PID là PID (ID tiến trình) cho phiên đó. Các phiên cũ, treo nên có các PID thấp hơn so với phiên mới, hiện tại của bạn.

Nếu có một quy trình chạy dài mà bạn đặc biệt muốn tiếp tục chạy ngay cả sau khi bạn ngắt kết nối, bạn có thể thêm tiền tố vào lệnh của mình bằng nohup:

nohup badblocks -nvs /dev/sda &

0

Khi phiên ssh chết, giả liên kết được đóng lại và đặt lại. Thông thường, shell và các tiến trình khác liên quan đến tty đó bị giết, vì chúng là các tiến trình con của quá trình tạo ra nó. Nếu có quá trình treo xung quanh, có lẽ họ đã bị lạc hậu? Vâng, có lẽ họ nên bị giết - sự sạch sẽ bên cạnh sự tin kính. Chúng chiếm một số tài nguyên - thường không nhiều, nhưng nó có thể tăng lên sau một lúc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.