Em ambientes de missão crítica, perder a conexão SSH durante a execução de um script de backup, uma reestruturação de disco ou uma compilação de kernel é um verdadeiro pesadelo. É aqui que entra o GNU Screen.
Muito mais do que um simples utilitário para manter processos rodando em segundo plano, o screen é um multiplexador de terminal completo. Ele permite criar múltiplas janelas dentro de uma única sessão SSH, dividir a tela, compartilhar o terminal com outros usuários e manter um histórico de logs impecável.
Neste guia definitivo, vamos explorar todas as facetas deste comando essencial para qualquer Sysadmin ou DBA Sênior.
1. O Ciclo de Vida Básico (Attach / Detach)
O conceito fundamental do screen é a capacidade de "desconectar" (detach) de uma sessão, deixando os processos rodando no servidor, e "reconectar" (attach) mais tarde, de qualquer outro lugar.
- Iniciar uma nova sessão: Basta digitar
screenno terminal. - Desconectar (Detach): Pressione
Ctrl + a, solte as teclas, e pressioned. Você voltará ao terminal original, mas a sessão continuará viva no background. - Listar sessões ativas:
screen -lsouscreen -list. - Reconectar (Attach):
screen -r(onde PID é o número mostrado na listagem).
2. Gestão Avançada de Sessões (Linha de Comando)
Para uso profissional, depender de PIDs gerados aleatoriamente não é eficiente. O poder real está nas flags de inicialização:
screen -S nome_da_sessao: Cria uma sessão nomeada (ex:screen -S backup_banco). Para reconectar, basta usarscreen -r backup_banco.screen -d -r nome_da_sessao: O comando salva-vidas. Se a sua internet cair e a sessão ficar "presa" (Attached) no servidor, este comando força a desconexão da sessão fantasma e a reconecta no seu terminal atual.screen -D -R nome_da_sessao: O "God Mode". Se a sessão existir, ele a rouba e reconecta. Se não existir, ele cria uma nova com esse nome. Excelente para colocar em scripts de login.screen -x nome_da_sessao: Compartilhamento de tela (Multi-display). Permite que dois usuários SSH diferentes se conectem à mesma sessão simultaneamente. O que um digita, o outro vê em tempo real. Perfeito para pair programming ou treinamento.screen -L: Inicia a sessão forçando a gravação de todo o output do terminal em um arquivo chamadoscreenlog.0no diretório atual. Ideal para auditoria de scripts longos.
3. Dominando as Janelas Internas (O Prefixo Ctrl+a)
Dentro de uma sessão do screen, todos os comandos internos começam com o prefixo Ctrl + a. Após pressionar essa combinação, você digita uma segunda tecla para executar a ação:
Ctrl+aseguido dec: Cria uma nova janela (Create).Ctrl+aseguido denoup: Navega para a próxima janela (Next) ou a anterior (Previous).Ctrl+aseguido de"(aspas duplas) : Abre um menu interativo listando todas as janelas abertas para você escolher.Ctrl+aseguido deA(maiúsculo) : Permite renomear a janela atual. Fundamental para não se perder quando se tem 10 janelas abertas.Ctrl+aseguido dek: Mata (Kill) a janela atual.Ctrl+aseguido de\: Mata todas as janelas e encerra a sessão do screen completamente.
4. Divisão de Tela (Split Screen)
Você não precisa do tmux para dividir a tela. O screen faz isso nativamente, permitindo monitorar logs de um lado e digitar comandos do outro.
Ctrl+aseguido deS(maiúsculo) : Divide a tela horizontalmente.Ctrl+aseguido de|(pipe) : Divide a tela verticalmente.Ctrl+aseguido deTab: Move o cursor para a próxima região dividida. (Nota: a nova região nasce em branco. Você precisa pressionarCtrl+a cpara criar um terminal nela ouCtrl+a "para puxar uma janela existente).Ctrl+aseguido deX(maiúsculo) : Fecha a região atual.Ctrl+aseguido deQ(maiúsculo) : Fecha todas as outras regiões, deixando apenas a atual em tela cheia.
5. Modo de Cópia e Scrollback (Rolagem de Tela)
Um dos maiores choques para iniciantes é descobrir que a rodinha do mouse ou o Page Up não funcionam dentro do screen. Para rolar a tela para cima e ver o histórico de um log, você precisa entrar no "Copy Mode":
- Pressione
Ctrl+aseguido de[(ouESC). - Agora você pode usar as setas do teclado, Page Up e Page Down para navegar pelo histórico.
- Para copiar um texto: mova o cursor até o início do texto, pressione Espaço, mova o cursor até o final do texto, e pressione Espaço novamente.
- Para colar o texto copiado: pressione
Ctrl+aseguido de].
6. Segurança: Bloqueando a Sessão
Se você precisa se afastar da mesa, mas quer deixar o processo rodando na tela de forma segura, use:
Ctrl+a seguido de x : Isso bloqueia a sessão do screen. Para desbloquear, será exigida a senha do usuário do sistema operacional.
7. O Arquivo de Configuração Profissional (.screenrc)
O comportamento padrão do screen é muito espartano. Para transformá-lo em uma ferramenta moderna, crie um arquivo chamado .screenrc no diretório home do seu usuário (~/.screenrc) e adicione as seguintes linhas:
# Desativa a mensagem de boas-vindas
startup_message off
# Aumenta o buffer de histórico para 10.000 linhas
defscrollback 10000
# Cria uma barra de status visual na parte inferior da tela
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %Y-%m-%d %{W}%c %{g}]'
# Atalhos rápidos para alternar janelas com F1 e F2
bindkey -k k1 prev
bindkey -k k2 next
Com esse arquivo, seu screen passará a exibir uma barra verde na parte inferior mostrando o nome do servidor, as abas abertas (destacando a aba atual em vermelho) e um relógio no canto direito.
A infraestrutura não perdoa falhas
Ferramentas como o screen garantem que processos críticos sobrevivam a instabilidades de rede. Na AJMSolutions, aplicamos as melhores práticas de administração de sistemas para garantir que seus bancos de dados e servidores operem com resiliência máxima, 24 horas por dia.