Trabalhar com terminais remotos ou executar processos de longa duração pode ser desafiador, especialmente quando há risco de desconexões ou quando se precisa gerenciar múltiplas tarefas simultaneamente. É aí que entra o GNU Screen, uma ferramenta poderosa que permite criar sessões persistentes de terminal.

Com o screen, você pode iniciar uma sessão de terminal que continuará rodando mesmo se fechar a janela ou perder a conexão. Isso é especialmente útil em servidores, onde é comum rodar processos demorados, como atualizações de sistemas, downloads, scripts automatizados e monitoramento de logs.

A seguir, veja como instalar, usar e dominar o screen para tornar seu fluxo de trabalho mais eficiente e resiliente.


🛠 Instalação do screen

O screen está disponível na maioria das distribuições Linux. Para instalá-lo, use o gerenciador de pacotes correspondente ao seu sistema:

Ubuntu / Debian

sudo apt install screen

Arch Linux

sudo pacman -S screen

CentOS / RHEL

sudo yum install screen

Após a instalação, o screen já pode ser utilizado diretamente no terminal.


🎯 Criando e Gerenciando Sessões screen

1️⃣ Criar uma nova sessão

Para iniciar uma nova sessão do screen, basta executar:

screen

Isso abrirá um novo terminal dentro do screen, onde você pode executar comandos normalmente.

Caso precise nomear a sessão, facilitando sua identificação posteriormente:

screen -S minha_sessao

2️⃣ Desanexar uma sessão sem fechá-la

Se precisar voltar ao terminal principal sem encerrar o que está rodando no screen, pressione:

Ctrl + A, depois D

Isso desanexará a sessão, permitindo que ela continue rodando em segundo plano.

3️⃣ Listar sessões ativas

Se houver várias sessões em execução, você pode listar todas elas com:

screen -ls

O terminal exibirá algo como:

There are screens on:
    12345.pts-0.servidor (Detached)
    67890.pts-1.servidor (Attached)

Cada sessão possui um ID único, usado para reconectá-la.

4️⃣ Reanexar uma sessão

Caso queira retornar a uma sessão desanexada:

screen -r <ID_da_sessão>

Por exemplo, para reconectar-se à sessão 12345.pts-0.servidor:

screen -r 12345

Se houver apenas uma sessão ativa, basta rodar:

screen -r

5️⃣ Encerrar uma sessão screen

Para fechar completamente uma sessão, você pode:

  • Digitar exit dentro da sessão e pressionar Enter:
    exit
    
  • Pressionar Ctrl + D para sair da sessão.
  • Forçar o fechamento de uma sessão específica pelo ID:
    screen -S minha_sessao -X quit
    

🔥 Comandos Essenciais do screen

Enquanto estiver dentro de uma sessão screen, utilize os atalhos abaixo para gerenciar seu ambiente com mais eficiência:

ComandoDescrição
Ctrl + A, DDesanexa a sessão (envia para segundo plano)
Ctrl + A, CCria uma nova janela dentro da sessão
Ctrl + A, NAlterna para a próxima janela
Ctrl + A, PAlterna para a janela anterior
Ctrl + A, WLista todas as janelas abertas
Ctrl + A, [Entra no modo de cópia (permite copiar texto)
Ctrl + A, Shift + ARenomeia a janela atual
Ctrl + A, Shift + “Volta ao hub de janelas
Ctrl + A, KRemove a janela da listagem
Ctrl + A, :numberAltera a posição dela na listagem
Ctrl + A, CCria uma nova janela dentro do hub
Ctrl + A, KFecha a janela atual
Ctrl + A, [Ativa o modo de cópia para copiar texto
Ctrl + A, ?Exibe a ajuda do screen

Esses atalhos ajudam a gerenciar múltiplas janelas e tornam o uso do screen mais eficiente.


🚀 Executando Comandos Diretamente no screen

O screen também permite executar comandos automaticamente dentro de uma sessão, sem necessidade de interagir diretamente com ela.

Por exemplo, para criar uma sessão chamada meu_script, rodando um script em segundo plano:

screen -S meu_script -dm bash -c './script.sh'

Explicação:

  • -S: Define o nome da sessão.
  • -dm: Inicia o screen em modo desanexado.
  • bash -c './script.sh': Executa o comando dentro da sessão.

Isso é útil para rodar processos automatizados, como backups e verificações de sistema.


📌 Aplicações Práticas do screen

✅ Manter processos rodando mesmo após a desconexão

Se você está conectado a um servidor remoto e precisa garantir que um comando continue executando mesmo se sua conexão cair, rode:

screen -S meu_processo

Dentro da sessão, inicie seu processo normalmente. Depois, pressione Ctrl + A, D para desanexar e sair. Se precisar voltar, basta usar screen -r meu_processo.

✅ Monitoramento contínuo de logs

O screen facilita o monitoramento de arquivos de log em tempo real. Para acompanhar um log sem que a sessão seja fechada após sair:

screen -S monitoramento
tail -f /var/log/syslog

Isso mantém o acompanhamento do log rodando em segundo plano.

✅ Compartilhamento de sessão com outro usuário

Se precisar compartilhar sua sessão com outra pessoa logada no mesmo servidor, use:

screen -x

Isso permite que ambos os usuários vejam e interajam com o mesmo terminal.


🔚 Conclusão

O screen é uma ferramenta indispensável para administradores de sistemas, desenvolvedores e qualquer pessoa que trabalhe com servidores Linux.

Com ele, você pode:

Manter processos rodando mesmo após sair do terminal.
Gerenciar múltiplas janelas dentro da mesma sessão.
Executar comandos automaticamente dentro de sessões.
Monitorar logs e executar tarefas de longa duração de forma eficiente.