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 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.


Instalação do screen

O screen está disponível na maioria das distribuições Linux. 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

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

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.

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.

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

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

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'
  • -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.

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