
Eu tenho 2 hosts que posso conectá-los através de SSH. Em um host, depois de um tempo, recebo o erro. Write Failed: broken pipe.
No outro host, não recebo esse erro.
Não entendo por que em um host recebo esse problema e em outro host está tudo bem.
Então, configurei uma conexão SSH com o tmux e, dentro do host remoto, executo um processo em primeiro plano (celeryd). Mas, mesmo quando a sessão SSH falha e eu me reconecto à sessão interrompida, o processo em primeiro plano morreu.
Eu gostaria que o processo em primeiro plano não fosse interrompido quando a conexão SSH fosse interrompida. Então, só tenho 2 soluções:
- saber como evitar tubos quebrados de SSH ou
- saiba como evitar que o processo morra quando a conexão SSH cair.
Alguém pode me ajudar nisso?
Responder1
Não sei o que acontece com sua conexão SSH, mas provavelmente um link de rede ruim? Você pode tentar usarMOSH, que é mais robusto que uma conexão SSH normal. Especialmente se a rede for o problema.
Se você não consegue consertar a conexão, você pode tentar usar nohup
na frente do seu comando ou apenas nohup tmux
e ver se isso muda alguma coisa.
nohup - executa um comando imune a interrupções, com saída para um não-tty
SINOPSE
nohup COMANDO [ARG]...
nohup OPÇÃO
Responder2
Eu me deparei com esse problema apenas algumas vezes. Para mim, o que causaria o rompimento do cano seria a falta de uma rota. Ocorreu apenas ao conectar-se de uma máquina física na rede principal a uma VM em uma rede diferente atrás de um Nat.
Eu verificaria se há problemas de rede para ver se você pode impedir a ocorrência de canos quebrados.
Se você não conseguir encontrar a causa do problema, poderá usar algo como screen ou tmux para manter um terminal aberto mesmo se estiver desconectado. Então você pode se reconectar e conectar-se à tela ou à sessão tmux e seu processo ainda estará em execução e ativo.
Responder3
A causa mais comum de desconexões de ssh para mim é a falta de manutenção. É configurável no cliente ssh. Com ssh, seria "-oTCPKeepAlives=yes"
no que diz respeito aos programas em execução após o fechamento do ssh, quando você executa um programa no shell, ele é um processo filho da instância do shell. Depois de fechar, as crianças também fecham. Você pode tentar executar seu programa com um & no final, o que geraria um processo diferente. Acabei de fazer um teste rápido e o processo parece continuar depois que a conexão ssh é desconectada.