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

16

Ocasionalmente, perco minha conexão SSH remota com meu VPS. Uso screenpara processos de longa execução, mas estou me perguntando o que acontece com os processos que eu executava além daqueles executados em uma screensessão se eu perder a conexão com a caixa.

Ao restabelecer uma conexão com a caixa, o que aconteceu com os processos bash e sshd que estavam em execução quando eu perdi a conexão? Hoje perdi a conexão repetidamente e notei muito mais processos bash e sshd do que o habitual.

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

Obrigado por qualquer resposta!

David Marble
fonte

Respostas:

8

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

Você provavelmente deve encerrar as sessões antigas, embora não precise necessariamente. Digite ps auxno console para listar os processos e, em seguida, kill PIDpara cada sessão ssh travada, em que PID é o PID (ID do processo) dessa sessão. As sessões suspensas mais antigas devem ter PIDs mais baixos que a nova sessão atual.

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

nohup badblocks -nvs /dev/sda &
roubar
fonte
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 fundamentados? Sim, eles provavelmente deveriam ser mortos - a limpeza é quase a piedade. Eles ocupam alguns recursos - geralmente não muito, mas podem aumentar depois de um tempo.

Shannon Nelson
fonte