Como usar tmux ou screen pra manter processos rodando após desconectar do SSH
Já aconteceu de você fechar o terminal (ou a internet cair) no meio de um processo rodando via SSH e tudo simplesmente morrer junto? Isso acontece porque, por padrão, quando a conexão SSH termina, o sistema encerra os processos que você iniciou naquela sessão. A boa notícia é que existe uma solução simples e muito usada: os "multiplexadores de terminal" tmux e screen.
Neste guia eu vou te mostrar, com calma, como usar os dois. Pode escolher o que preferir — eles resolvem o mesmo problema, só com comandos um pouquinho diferentes.
Antes de começar: esse recurso depende de acesso SSH ao seu ambiente de hospedagem, que pode variar conforme o plano contratado. Se você não tiver certeza se o seu plano inclui acesso SSH, confira no painel.gehost.com.br ou fale com o suporte.
Por que isso acontece?
Quando você conecta via SSH e roda um comando, ele fica "amarrado" àquela sessão do terminal. Se a sessão cai — seja porque você fechou o notebook, a internet oscilou ou o terminal travou — o processo recebe um sinal de encerramento e para no meio do caminho. Isso é péssimo para tarefas demoradas, como:
- Compactar ou migrar um grande volume de arquivos;
- Rodar um script de importação/exportação de banco de dados;
- Deixar um processo de build ou instalação rodando por vários minutos.
O tmux e o screen resolvem isso criando uma "sessão virtual" que continua rodando no servidor mesmo depois que você sai. Depois, é só reconectar e "entrar" de novo nessa sessão, como se nunca tivesse saído.
Opção 1: usando o tmux
O tmux é o mais moderno e o mais recomendado hoje em dia. Veja o passo a passo:
1. Verifique se o tmux está disponível
Conecte via SSH normalmente e digite:
tmux -V
Se aparecer um número de versão, ótimo, já pode seguir. Se aparecer algo como "comando não encontrado", pode ser que o tmux não esteja disponível no seu ambiente — nesse caso, tente o screen (mais abaixo) ou fale com o suporte.
2. Crie uma sessão nova
tmux new -s minha-tarefa
Aqui, "minha-tarefa" é só um nome pra você identificar a sessão depois — pode chamar do que quiser, sem espaços.
3. Rode seu processo normalmente
Você vai perceber que a tela muda um pouco (geralmente aparece uma barra verde na parte de baixo). É sinal de que você está "dentro" do tmux. Agora é só rodar o comando ou script que precisa demorar, como se estivesse em um terminal comum.
4. Saia sem encerrar (o pulo do gato!)
Para se desconectar da sessão sem matar o processo, use o atalho:
Ctrl + b, depois solte e aperte d
Isso "desanexa" (detach) a sessão. Você volta pro terminal normal e pode até fechar o SSH — o processo continua rodando por trás dos panos.
5. Volte pra sessão quando quiser
Reconecte via SSH e digite:
tmux attach -t minha-tarefa
Pronto, você volta exatamente pra onde parou, podendo ver o progresso do processo.
6. Listando sessões abertas
Se esqueceu o nome da sessão ou quer ver quais estão ativas:
tmux ls
Opção 2: usando o screen
O screen é mais antigo, mas ainda muito usado e costuma vir instalado por padrão em vários sistemas. O funcionamento é bem parecido:
1. Crie uma sessão nova
screen -S minha-tarefa
2. Rode seu processo
Assim que a tela "limpar", você já está dentro da sessão. Rode o comando normalmente.
3. Saia sem encerrar
Ctrl + a, depois solte e aperte d
Isso desanexa a sessão do screen, deixando o processo rodando.
4. Volte depois
screen -r minha-tarefa
5. Listando sessões
screen -ls
tmux ou screen — qual escolher?
- tmux: mais moderno, permite dividir a tela em painéis, é muito usado hoje em dia. Recomendo se estiver disponível.
- screen: mais simples e costuma estar presente por padrão em mais sistemas.
Na prática, os dois resolvem o problema principal: manter o processo vivo mesmo depois que você desconecta. Use o que estiver disponível no seu ambiente.
Dicas importantes
Dê nomes claros às suas sessões (como -s backup-site ou -s importacao-banco). Isso evita confusão quando você tiver mais de uma sessão aberta ao mesmo tempo.
Encerrou de verdade o que precisava? Feche a sessão digitando exit dentro dela (não apenas o "detach"). Sessões esquecidas continuam consumindo recursos do seu ambiente.
Se depois de tentar os passos acima o comando tmux ou screen não funcionar, ou se você tiver dúvida sobre se seu plano possui acesso SSH, é só chamar o suporte da GeHost — estamos aqui pra ajudar.
Resumindo
- Conecte via SSH;
- Abra uma sessão com tmux new -s nome ou screen -S nome;
- Rode seu processo dentro da sessão;
- Desconecte com segurança usando o atalho de "detach" (não feche a janela na força bruta);
- Volte quando quiser com tmux attach ou screen -r.
Com isso, você ganha tranquilidade pra rodar tarefas longas sem depender de manter o notebook ligado e a internet estável o tempo todo. Qualquer dúvida, é só chamar a gente — estamos juntos nessa! 💙