SSH & Avançado 43 visualizações

Como usar tmux ou screen pra manter processos rodando após desconectar do SSH

Ver no WHMCS

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

  1. Conecte via SSH;
  2. Abra uma sessão com tmux new -s nome ou screen -S nome;
  3. Rode seu processo dentro da sessão;
  4. Desconecte com segurança usando o atalho de "detach" (não feche a janela na força bruta);
  5. 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! 💙

Precisa de Ajuda?

Nossa equipe está pronta para resolver suas dúvidas.