Como manter um processo rodando mesmo depois de fechar o SSH (tmux e screen)
Oi! Aqui é a Sensei da GeHost 🧙 Vou te contar um segredinho que separa quem sofre de quem sofre bem menos na hora de rodar scripts, importações longas ou qualquer processo demorado no servidor: usar o tmux ou o screen.
Você já passou por isso: abriu o SSH, disparou um comando que demora horas, a internet caiu (ou você fechou o notebook sem querer) e... o processo morreu junto com a conexão. Chato, né? É exatamente isso que vamos resolver hoje.
Por que isso acontece? Quando você fecha a sessão SSH, o terminal manda um sinal de "encerrar" pra tudo que estava rodando dentro dele. Sem um "guarda-costas" como o tmux ou o screen, seu processo vai junto.
O que são tmux e screen?
Os dois fazem basicamente a mesma coisa: criam uma sessão de terminal que continua viva no servidor, independente da sua conexão SSH estar aberta ou não. Você "entra" na sessão, roda o que precisa, "sai" dela (sem fechar) e pode voltar depois — de outro lugar, outro dia, o processo continua lá rodando.
- screen — mais simples, geralmente já vem instalado.
- tmux — um pouco mais moderno, com telas divididas e mais recursos, mas a lógica de uso é praticamente igual.
Importante: o uso de terminal/SSH depende da disponibilidade dessa funcionalidade no seu plano de hospedagem. Se você não tem certeza se seu plano inclui acesso via SSH, dá uma olhada no painel.gehost.com.br ou fale com o nosso suporte antes de seguir — assim você já começa sabendo se essa ferramenta está disponível pra sua conta.
Passo a passo com tmux
- Conecte via SSH normalmente, do jeito que você já costuma fazer.
-
Verifique se o tmux está instalado digitando:
tmux -VSe aparecer um número de versão, ótimo, já pode seguir. Se der erro dizendo que o comando não existe, provavelmente ele precisa ser instalado — nesse caso, fale com o suporte pra confirmar a disponibilidade no seu ambiente.
-
Crie uma nova sessão com um nome fácil de lembrar:
tmux new -s minha-tarefaRepare que o prompt muda visualmente — você agora está "dentro" da sessão tmux.
- Rode seu processo normalmente ali dentro, como se fosse um terminal comum. Exemplo: um script de importação, um backup manual, o que for.
-
Saia sem encerrar (isso é o pulo do gato!). Aperte:
Ctrl + b, solte, e depois apertedIsso "desanexa" (detach) a sessão. Você volta pro terminal normal, mas o processo continua rodando escondidinho.
- Pode fechar o SSH, desligar o notebook, ir tomar um café — o processo segue rodando no servidor.
-
Quando quiser voltar, conecte via SSH de novo e digite:
tmux attach -t minha-tarefaPronto, você está de volta exatamente onde parou, vendo o processo em andamento (ou já finalizado, com o resultado na tela).
Passo a passo com screen (alternativa)
Se preferir o screen, a lógica é a mesma, só muda o comando:
- Criar sessão:
screen -S minha-tarefa - Rodar o processo normalmente ali dentro.
- Sair sem encerrar:
Ctrl + a, solte, e depois aperted - Voltar depois:
screen -r minha-tarefa
Comandos úteis do dia a dia
- Ver todas as sessões abertas (tmux):
tmux ls - Ver todas as sessões abertas (screen):
screen -ls - Encerrar de vez uma sessão (quando o processo já terminou e você não precisa mais dela): entre nela e digite
exit, em vez de só "sair" com o atalho de desanexar.
Dica da Sensei: dê sempre um nome claro pra sessão (como -s importacao-clientes) em vez de deixar o nome padrão numérico. Depois de um tempo, com várias sessões abertas, você vai agradecer por lembrar qual é qual.
Outra dica: se o processo for algo crítico (como uma migração de banco de dados), é sempre bom rodar dentro do tmux/screen desde o início — nunca direto no terminal "cru" — assim você já sai protegido de qualquer queda de conexão.
Resumindo
tmux e screen são como um "modo avião" pra seus processos: eles ficam rodando no servidor de forma independente da sua conexão. Você entra, trabalha, sai sem desligar, e volta quando quiser continuar de onde parou. Simples assim!
Ficou com alguma dúvida no meio do caminho? É só chamar o suporte da GeHost pelo painel — a gente te ajuda a destravar. 💜