Estou fazendo algum trabalho em uma máquina remota do CentOS 5.6 e minha rede continua caindo. Existe uma maneira de recuperar minhas sessões suspensas depois de me reconectar?
EDIT: estou atualizando e instalando com o yum e estou preocupado que isso possa ser um problema se os processos continuarem pendurados no meio do que eles estão fazendo.
linux
session
shell
networking
Jeff Schaller
fonte
fonte
Respostas:
Não há como, mas para evitar isso, eu gosto de usar
tmux
. Inicio o tmux, inicio a operação e continuo o meu caminho. Se eu retornar e descobrir que a conexão foi interrompida, tudo o que preciso fazer é reconectar e digitartmux attach
.Aqui está um exemplo.
fonte
screen
.As recomendações para tmux e screen são boas sugestões. Elas implicam a resposta à sua pergunta, mas na verdade não a declaram. A resposta para a pergunta é: não há como. Se você fizer login via ssh, o shell será encerrado quando a conexão cair. A solução é fazer login e iniciar imediatamente um terminal virtual de algum tipo (como
tmux
). Quando a conexão cai, o shell em que você está termina, mas você pode abrir um novo shell e reconectar-se ao terminal virtual (que está executando o shell no qual você está realmente fazendo seu trabalho).fonte
Como William disse, a resposta curta é não, não há como. Para evitar isso, você pode usar o comando screen antes de perder a conexão
fonte
Não, você não pode recuperar um shell após uma desconexão. Em vez disso, o que você pode fazer é garantir que o comando que você estava executando continue executando após a desconexão.
Para conseguir isso, use os comandos "nohup" e "disown", que geralmente são comandos integrados na maioria dos shells, ou seja, você não precisa instalar nada. Porém, isso funciona apenas para comandos não interativos.
Portanto, as etapas seriam as seguintes:
Quando você voltar ao servidor, simplesmente "tail nohup.out" para ver como está o comando.
fonte
Alguém adicionou reptyr em um comentário, em vez de uma resposta, então não posso votar novamente, mas parece uma boa resposta para a pergunta editada e funcionou muito bem no CentOS.
consulte: https://github.com/nelhage/reptyr https://www.ostechnix.com/reptyr-move-running-process-new-terminal/
Então, a mesma coisa, eu perdi a conexão remota com uma sessão de atualização do yum. Então eu procurei e encontrei esta pergunta ... então reconecte e usei a tela desta vez:
e lá estou eu, no prompt recuperado, que yum estava dando algumas horas antes.
Tecnicamente, as respostas estão todas corretas, isso NÃO é uma recuperação de uma sessão interrompida, é uma reparação de um processo órfão à sessão atual. E muito útil também é ...
fonte
Como muitas pessoas sugeriram
screen
etmux
, ambas suportam funcionalidade básica, mas possuem recursos específicos distintos, portanto, não se pode dizer que uma seja superior à outra em todos os casos. Por exemplo, apenas o tmux suporta a divisão de janelas , enquanto apenas a tela GNU pode alternar a quebra de linha longa com (Ctrl + ar). Veja uma comparação mais detalhada aqui .Também existem ferramentas especificamente para corrigir esse problema do ssh:
Autossh é um programa para iniciar uma cópia do ssh e monitorá-lo, reiniciando-o conforme necessário, caso ele morra ou pare de passar o tráfego. A ideia é do rstunnel.
O Mosh é um aplicativo de terminal remoto que permite roaming, suporta conectividade intermitente e fornece eco local inteligente e edição de linha das teclas do usuário. Mosh é um substituto para o SSH. É mais robusto e ágil, principalmente através de links Wi-Fi, celulares e de longa distância.
fonte
Isso pode ser feito usando o
tmux
shell. Se você for desconectado, a maneira mais rápida de reconectar uma sessão é:fonte
tmux
sessão em execução.attach
comoa
".