Uma pergunta boba: Acabei de sair de uma sessão ssh com uma máquina remota através da linha cmd. Há algo que matou outros trabalhos ou desligou a máquina? Tudo aconteceu devido à conectividade de rede e à sessão ssh estarem suspensas. Eu apenas tive que pressionar Ctrl + Z nesse ponto e ele afirmou que há trabalhos interrompidos.
Máquina remota: Ubuntu
Desde já, obrigado!
Respostas:
Bem, se problemas de rede causam o travamento da conexão, isso significa que os pacotes de dados não estão passando. É claro que isso significa que os pacotes de "conexão estreita" do cliente também não podem passar.
Portanto, durante problemas de rede, o servidor ainda não sabe que você matou o cliente. Isso só será descoberto se tentar enviar mais dados e a) não receber uma confirmação ou b) receber um pacote de redefinição ("essa conexão não existe mais").
De qualquer maneira, depois que descobrir que a conexão SSH está interrompida, o sshd enviará um sinal "hangup" (SIGHUP) para qualquer programa que esteja sendo executado em primeiro plano (seu shell, seu editor de texto ou qualquer outro). O shell enviará o mesmo SIGHUP para todos os seus trabalhos em segundo plano, antes de sair. Portanto, seus trabalhos em segundo plano também serão encerrados. (Esta é a razão pela qual
nohup
existem ferramentas , afinal.)Se você matar
ssh
enquanto a rede estiver boa, o mesmo acontece - o servidor receberá um pacote "redefinição de conexão" e enviará 'hangup' para o shell.Por fim, se você efetuar logout através do próprio shell (usando
exit
ou CtrlD), ele também passará pelo mesmo processo de limpeza, embora desta vez tenha a chance de lembrá-lo sobre a execução de trabalhos.fonte