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 pressionarEnter
: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:
Comando | Descrição |
---|---|
Ctrl + A, D | Desanexa a sessão (envia para segundo plano) |
Ctrl + A, C | Cria uma nova janela dentro da sessão |
Ctrl + A, N | Alterna para a próxima janela |
Ctrl + A, P | Alterna para a janela anterior |
Ctrl + A, W | Lista todas as janelas abertas |
Ctrl + A, [ | Entra no modo de cópia (permite copiar texto) |
Ctrl + A, Shift + A | Renomeia a janela atual |
Ctrl + A, Shift + “ | Volta ao hub de janelas |
Ctrl + A, K | Remove a janela da listagem |
Ctrl + A, :number | Altera a posição dela na listagem |
Ctrl + A, C | Cria uma nova janela dentro do hub |
Ctrl + A, K | Fecha 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 oscreen
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.