O que acontece com os processos em execução quando perco uma conexão remota com uma caixa * nix?

16

Ocasionalmente, perco minha conexão SSH remota para o meu VPS. Eu uso screen para processos de longa duração, mas estou querendo saber o que acontece com os processos que eu estava executando além daqueles executados em uma sessão screen se eu perder a conexão com a caixa.

Quando eu restabelecer uma conexão com a caixa, o que aconteceu com os processos bash e sshd que estavam sendo executados quando perdi a conexão? Hoje eu perdi a conexão repetidamente e notei muitos mais processos bash e sshd do que o normal.

Se houver processos por aí, preciso matá-los? Como eu poderia determinar quais processos foram abandonados da minha sessão anterior?

Obrigado por qualquer resposta!

    
por David Marble 22.05.2010 / 02:46

2 respostas

8

Normalmente, os processos terminam após a desconexão, mas as antigas sessões SSH podem estar aguardando o tempo limite ou podem ter pendurado na saída , devido a uma condição de corrida.

Você provavelmente deve encerrar as sessões antigas, embora não seja necessário. Digite ps aux no console para listar os processos e, em seguida, kill PID para cada sessão ssh suspensa, em que PID é o PID (ID do processo) dessa sessão. As sessões suspensas mais antigas devem ter PIDs mais baixas do que a sua nova sessão atual.

Se houver um processo de longa duração que você deseja especificamente continuar executando mesmo depois de desconectar, você pode prefixar seu comando com nohup:

nohup badblocks -nvs /dev/sda &
    
por 22.05.2010 / 03:22
0

Quando a sessão ssh morre, a pseudo-tty associada é fechada e redefinida. Normalmente, o shell e outros processos associados a esse tty são eliminados, pois são processos filhos do processo que o criou. Se há processos por aí, talvez eles tenham sido orientados? Sim, eles provavelmente deveriam ser mortos - a limpeza é próxima à piedade. Eles tomam alguns recursos - normalmente não muito, mas podem aumentar após algum tempo.

    
por 22.05.2010 / 03:11