Co stanie się z uruchomionymi procesami, gdy stracę zdalne połączenie ze skrzynką * nix?

16

Czasami tracę moje zdalne połączenie SSH z moim VPS. Używam screendo długotrwałych procesów, ale zastanawiam się, co stanie się z procesami, które miałem uruchomione oprócz tych uruchomionych w screensesji, jeśli stracę połączenie z urządzeniem.

Kiedy ponownie ustanawiam połączenie z urządzeniem, co stało się z procesami bash i sshd, które działały, gdy straciłem połączenie? Dzisiaj wielokrotnie traciłem połączenie i zauważyłem o wiele więcej procesów bash i sshd niż zwykle.

Jeśli wokół są jakieś procesy, czy muszę je zabić? Jak mogę określić, które procesy zostały porzucone podczas poprzedniej sesji?

Dziękuję za wszelkie odpowiedzi!

David Marble
źródło

Odpowiedzi:

8

Normalnie procesy zakończą się po rozłączeniu, ale stare sesje SSH mogły albo czekać na przekroczenie limitu czasu, albo mogły zawiesić się przy wyjściu z powodu wyścigu.

Prawdopodobnie powinieneś zakończyć stare sesje, chociaż niekoniecznie musisz. Wpisz ps auxna konsoli listę procesów, a następnie kill PIDdla każdej zawieszonej sesji ssh, gdzie PID to PID (identyfikator procesu) dla tej sesji. Starsze zawieszone sesje powinny mieć niższe PID niż bieżąca, nowa sesja.

Jeśli istnieje długotrwały proces, który chcesz kontynuować, nawet po rozłączeniu, możesz poprzedzić komendę nohup:

nohup badblocks -nvs /dev/sda &
obrabować
źródło
0

Kiedy sesja ssh umiera, skojarzony pseudo-tty zostaje zamknięty i zresetowany. Zazwyczaj powłoka i inne procesy związane z tym tty są zabijane, ponieważ są to procesy potomne procesu, który go utworzył. Jeśli wokół krążą jakieś procesy, być może zostały oszukane? Tak, prawdopodobnie powinni zostać zabici - czystość jest obok pobożności. Zajmują trochę zasobów - zwykle niewiele, ale po pewnym czasie mogą się sumować.

Shannon Nelson
źródło