SSH & Avançado 38 visualizações

Como usar screen ou tmux para manter processos ativos após desconectar do SSH

Ver no WHMCS

Por que a sua sessão SSH "morre" quando você fecha o terminal?

Você já deve ter passado por isso: conectou via SSH no seu servidor, começou a rodar um processo mais demorado — um backup, uma instalação, um script que baixa arquivos grandes — e, ao fechar o terminal (ou cair a internet de casa), o processo simplesmente parou no meio. Isso acontece porque, por padrão, tudo que você roda numa sessão SSH está "amarrado" a ela: quando a conexão cai, o processo cai junto.

A boa notícia é que existe uma solução simples e usada por administradores de servidor no mundo todo: as ferramentas screen e tmux. Elas criam uma "sessão de terminal virtual" que continua rodando no servidor mesmo depois que você se desconecta. Você fecha o notebook, vai almoçar, troca de rede — e quando reconectar, seu processo estará lá, do jeitinho que você deixou. Vamos aprender juntos, com calma. 🧘

Antes de começar

Este guia pressupõe que você já tem acesso SSH ao seu servidor de hospedagem. Nem todo plano inclui esse tipo de acesso por padrão — se você não tem certeza se o seu inclui, ou como ativá-lo, consulte o painel do cliente (painel.gehost.com.br) ou fale com o nosso suporte antes de seguir os passos abaixo.

O que é screen e o que é tmux?

Os dois fazem, na prática, a mesma coisa: mantêm um processo rodando "dentro" de uma sessão que sobrevive à sua desconexão. As diferenças são de estilo e recursos extras (o tmux é mais moderno e permite dividir a tela em painéis, por exemplo), mas para o dia a dia do cliente comum, qualquer um dos dois resolve muito bem o problema.

Dica da Sensei: se o seu servidor já tem os dois instalados, não precisa escolher "o melhor" — escolha o que fizer mais sentido pra você. Comece com o screen se quiser algo mais simples, ou com o tmux se pretende usar telas divididas no futuro.

Passo a passo com o screen

  1. Verifique se está instalado. Conecte via SSH normalmente e digite:

    screen -v

    Se aparecer um número de versão, ótimo, já está pronto pra usar. Se der erro de "comando não encontrado", peça ao suporte para verificar a instalação no seu ambiente.

  2. Crie uma nova sessão. Digite:

    screen -S meutrabalho

    O "-S meutrabalho" é só um apelido pra sua sessão — escolha um nome que te ajude a lembrar depois o que estava fazendo ali (ex.: screen -S backup-site).

  3. Rode o que você precisa normalmente, como se estivesse em qualquer terminal.
  4. "Solte" a sessão sem encerrar o processo (isso se chama detach): pressione Ctrl + A, solte, e depois pressione D. Você volta pro terminal "normal" — mas o processo continua rodando por trás, no servidor.
  5. Pode fechar o terminal, desligar o notebook, sair de casa — o processo segue rodando.
  6. Quando quiser voltar (de novo via SSH), digite:

    screen -r meutrabalho

    E pronto: você "reabre" exatamente a tela onde deixou tudo.

Passo a passo com o tmux

  1. Verifique se está instalado:

    tmux -V

  2. Crie uma nova sessão com nome:

    tmux new -s meutrabalho

  3. Rode seu processo normalmente dentro dessa sessão.
  4. "Solte" a sessão (detach): pressione Ctrl + B, solte, e depois pressione D.
  5. Volte quando quiser, já reconectado via SSH:

    tmux attach -t meutrabalho

  6. Quer ver todas as sessões abertas? Use:

    tmux ls

Perguntas que todo cliente faz

"E se eu esquecer o nome da minha sessão?"

Sem problema. No screen, digite screen -ls para listar todas as sessões abertas com seus nomes e status. No tmux, o comando equivalente é tmux ls.

"Posso ter mais de uma sessão ao mesmo tempo?"

Pode sim! É exatamente pra isso que damos um nome a cada uma — assim você organiza, por exemplo, uma sessão pra um backup e outra pra testar um script, sem misturar as duas.

"Como eu encerro de vez uma sessão que não preciso mais?"

Entre nela normalmente (screen -r nome ou tmux attach -t nome) e, dentro dela, digite exit. Isso fecha o terminal virtual por completo — diferente do "soltar" (detach), que só coloca a sessão em segundo plano.

Dica da Sensei: "soltar" (detach) mantém tudo rodando. "Sair" (exit) encerra de vez. São coisas bem diferentes — vale a pena guardar essa distinção antes de rodar um processo importante!

Boas práticas para não se perder

  • Sempre dê um nome à sessão (o -S no screen, o -s no tmux). Sessões sem nome viram números difíceis de identificar depois.
  • Confira antes de fechar o terminal se você realmente "soltou" a sessão (Ctrl+A D ou Ctrl+B D) e não apenas minimizou a janela do seu computador — são coisas diferentes.
  • Depois de terminar um processo importante, entre na sessão de novo pra conferir se tudo correu bem antes de encerrá-la com exit.
  • Evite deixar sessões antigas acumulando — de vez em quando rode screen -ls ou tmux ls e encerre o que não usa mais.

Se algo não funcionar

Se o comando screen ou tmux não for reconhecido pelo seu servidor, ou se você tiver dúvidas sobre o tipo de acesso do seu plano, é só chamar o nosso suporte — estamos aqui pra te ajudar a destravar isso sem dor de cabeça. E lembre-se: não existe pergunta boba quando o assunto é linha de comando. Todo mundo começou do zero um dia. 🌱

Precisa de Ajuda?

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