Por que sua sessão SSH "morre" quando a internet cai?
Oi, tudo bem? Aqui é a Sensei da GeHost 🧑🏫 e hoje vamos resolver um perrengue clássico de quem mexe com servidor: aquela sensação de raiva quando você está rodando um comando demorado via SSH, a internet pisca por um segundo, e... tudo se perde. O comando morre junto com a conexão.
Isso acontece porque, por padrão, tudo que você roda dentro de uma sessão SSH está "amarrado" a essa conexão. Se a conexão cai, o processo cai junto. A solução é simples e vai virar sua melhor amiga: usar um multiplexador de terminal, como o tmux ou o screen. Eles criam uma sessão "virtual" dentro do servidor que continua rodando mesmo se você desconectar — e você volta pra ela depois como se nada tivesse acontecido.
Dica da Sensei: pense no tmux/screen como um controle remoto de TV que você pode desligar (desconectar) sem desligar a TV (o processo). Quando você volta e liga o controle de novo, a TV está exatamente do jeito que você deixou.
Tmux ou screen: qual eu uso?
Os dois fazem basicamente a mesma coisa: mantêm sua sessão viva no servidor. A diferença é histórica e de praticidade:
- screen — mais antigo, quase sempre já vem instalado no servidor, comandos mais simples.
- tmux — mais moderno, permite dividir a tela em painéis, é mais configurável e é o mais usado hoje em dia.
Se seu servidor tiver os dois disponíveis, recomendo começar pelo tmux. Mas vou te ensinar os dois, porque nem todo ambiente tem o mesmo instalado.
Passo a passo com tmux
1. Verifique se o tmux está instalado
Conecte no seu servidor via SSH normalmente e digite:
tmux -V
Se aparecer um número de versão, ótimo, já está instalado. Se der erro de "comando não encontrado", peça ajuda ao suporte para verificar a instalação no seu plano.
2. Crie uma nova sessão
Basta digitar:
tmux new -s meutrabalho
O -s meutrabalho é só um nome que você escolhe pra identificar essa sessão depois (pode ser qualquer palavra, sem espaços). Você vai ver uma barra verde aparecer na parte de baixo do terminal — sinal de que agora você está "dentro" do tmux.
3. Rode seu comando normalmente
Dentro da sessão tmux, use o terminal exatamente como faria fora dele: rode scripts, atualize sistemas, faça o que precisar.
4. "Solte" a sessão sem fechar nada (detach)
Aqui está a mágica. Para sair da sessão sem matar o processo, aperte:
Ctrl + b, solte, depois aperte d
Você volta pro terminal "normal" e pode até fechar o programa de SSH, desligar o notebook, o que quiser — o processo continua rodando lá no servidor.
5. Volte para a sessão quando quiser (reattach)
Quando reconectar via SSH depois (em minutos, horas ou dias), digite:
tmux attach -t meutrabalho
E pronto: sua tela volta exatamente como você deixou, com o comando rodando ou já finalizado.
6. Ver todas as sessões abertas
Se esqueceu o nome que deu, liste todas as sessões ativas:
tmux ls
7. Encerrar uma sessão que não precisa mais
Depois de terminar o que precisava, para não deixar sessões "penduradas" no servidor, entre nela e digite exit, ou de fora mesmo:
tmux kill-session -t meutrabalho
Dica da Sensei: dê nomes descritivos às suas sessões (ex.:backup,importacao,deploy) em vez de nomes genéricos. Isso evita confusão quando você tiver várias rodando ao mesmo tempo.
Passo a passo com screen
1. Verifique se está instalado
screen -v
2. Crie uma nova sessão
screen -S meutrabalho
3. Rode seu comando normalmente
Use o terminal como sempre, dentro da sessão.
4. Solte a sessão (detach)
Aperte:
Ctrl + a, solte, depois aperte d
5. Volte para a sessão
screen -r meutrabalho
6. Liste as sessões ativas
screen -ls
7. Encerre quando terminar
Dentro da sessão, digite exit.
Situações comuns onde isso salva o seu dia
- Rodar uma migração de banco de dados grande, que demora vários minutos.
- Fazer upload ou download de arquivos pesados via terminal.
- Rodar scripts de importação/exportação que não podem ser interrompidos no meio.
- Trabalhar de um notebook em uma conexão instável (rede de viagem, 4G, Wi-Fi público).
- Deixar um processo rodando durante a madrugada e conferir o resultado no dia seguinte.
Resumo rápido para guardar
Se você lembrar só de uma coisa deste guia, que seja isto:
Sempre que for rodar algo que demora, abra uma sessão tmux ou screen antes de começar. Assim, se a conexão cair, o trabalho continua — e você só precisa "reconectar" na sessão depois, sem perder nada.
Qualquer dúvida na hora de aplicar isso no seu ambiente, é só chamar o suporte pelo painel do cliente que a gente te ajuda a configurar direitinho. 💚