Linux / Comando screen: manter sessões e retomar o terminal
screen permite manter uma sessão de terminal no servidor, desconectá-la da tela e retomá-la depois. O fluxo básico é criar uma sessão, executar a tarefa, pressionar Ctrl+A e depois d minúsculo para desconectar e usar screen -r para retomar. Isso é útil em conexões SSH, desde que o servidor e os processos da sessão continuem ativos.
Um multiplexador de terminal reúne várias janelas de terminal em uma sessão. Para tarefas simples sem interação, o comando nohup pode bastar; para voltar à tela e digitar comandos, screen ou tmux são mais adequados.
Quando usar o screen
O GNU Screen mantém janelas independentes: a tarefa pode continuar quando outra janela está selecionada ou a sessão está desconectada. Use-o para preservar o ambiente de trabalho interativo descrito no manual oficial do GNU Screen. O manual do projeto também está disponível como página screen(1) reproduzida no man7.org.
- Ao executar tarefas de longa duração como compilação, processamento de dados ou backups em um servidor acessado via SSH
- Quando você precisa desconectar a tela de trabalho e retomá-la em outro computador
- Ao operar múltiplas janelas de terminal, como shells, monitoramento de logs e editores dentro de uma única conexão SSH
- Quando você precisa verificar mais tarde a tela de um programa interativo em execução
Uma sessão não sobrevive à reinicialização do servidor e não reinicia automaticamente um programa que falhou. Para serviços permanentes, configure um gerenciador como systemd.
Instalar e iniciar a primeira sessão
Instalar o screen
Escolha apenas o bloco correspondente à sua distribuição. A instalação usa privilégios administrativos. Em Debian ou Ubuntu:
sudo apt update
sudo apt install screen
Em distribuições que usam DNF, com o pacote disponível nos repositórios habilitados:
sudo dnf install screen
No Rocky Linux, pode ser necessário habilitar o EPEL (Extra Packages for Enterprise Linux) apropriado à versão do sistema. A página oficial do pacote screen no Fedora/EPEL lista os ramos disponíveis. Se aparecer “nenhuma correspondência”, confira os repositórios e a versão, sem misturar pacotes de versões diferentes.
Em Arch Linux, seguindo a política de atualização da distribuição:
sudo pacman -S screen
Confira se o comando está disponível e qual versão está instalada:
screen --version
Criar uma sessão com nome
A opção -S atribui um nome à sessão. Use nomes curtos que identifiquem a tarefa; backup é apenas o nome deste exemplo.
screen -S backup
Abra a sessão a partir de um terminal interativo e execute nela seus comandos habituais. A variável STY normalmente contém o identificador quando o shell foi iniciado dentro do Screen; vazia, normalmente indica que esse shell está fora dele.
printf '%s\n' "$STY"
Iniciar uma sessão com um comando
Também é possível iniciar a sessão com um programa. O caminho ./backup.sh é um exemplo: ele precisa apontar para um script que já exista no diretório atual, tenha permissão de execução e inclua uma linha inicial de interpretador válida. Screen não cria esse script nem decide o que copiar.
screen -S backup ./backup.sh
Na configuração padrão, a janela fecha quando o programa termina; se for a última janela, a sessão também termina. Para examinar a saída depois da tarefa, prefira criar primeiro uma sessão com shell e executar o programa dentro dela, ou registre sua saída em arquivo.
Atalhos do Screen usados com frequência
Pressione Ctrl+A, solte as teclas e digite o segundo caractere. A notação abaixo distingue minúsculas e maiúsculas: c cria uma janela, enquanto C maiúsculo limpa a tela. Para A e H maiúsculos, use a tecla Shift conforme o teclado. Os atalhos padrão são descritos na tabela oficial de teclas do Screen.
| Teclas de atalho | Função | Descrição |
|---|---|---|
Ctrl+A, d |
Desconectar a tela | Voltar ao terminal externo mantendo a sessão. |
Ctrl+A, c |
Criar uma janela | Abrir outro shell na sessão atual. |
Ctrl+A, n |
Próxima janela | Selecionar a próxima janela virtual. |
Ctrl+A, p |
Janela anterior | Selecionar a janela virtual anterior. |
Ctrl+A, " |
Listar janelas | Abrir a lista e escolher uma janela. |
Ctrl+A, A |
Renomear a janela | Digitar um título e confirmar com Enter. |
Ctrl+A, [ |
Copiar ou consultar a rolagem | Entrar no modo de consulta da saída anterior. |
Ctrl+A, H |
Alternar o log | Iniciar ou interromper a gravação da saída atual. |
Ctrl+A, k |
Encerrar a janela | Remover a janela após a confirmação; use com cuidado. |
Ctrl+A, ? |
Consultar a ajuda | Exibir os atalhos configurados na sessão. |
Para enviar o próprio caractere Ctrl+A ao programa, pressione Ctrl+A e depois a minúsculo. Isso é diferente de A maiúsculo, que renomeia a janela. Arquivos de configuração como ~/.screenrc podem alterar os atalhos; Ctrl+A, ? mostra os que estão em uso.
Desconectar e retomar uma sessão
Desconectar mantendo o trabalho
Dentro da sessão, pressione Ctrl+A e depois d minúsculo. Você volta ao shell externo; o programa continua dentro da sessão, desde que nenhuma política ou falha do sistema encerre seus processos. Desconectar a tela não significa concluir ou cancelar a tarefa.
A opção autodetach vem ativada por padrão e permite a desconexão automática quando o terminal perde a conexão. A documentação de detach e autodetach explica essa condição. Se ela estiver desativada, perder o terminal pode encerrar a sessão.
Consultar a lista de sessões
screen -ls
A lista apresenta identificadores como PID.nome e estados como Detached (desconectada) ou Attached (ligada a um terminal). Use o nome ou o identificador completo para selecionar a sessão. Se nomes coincidirem, prefira o identificador completo exibido por screen -ls, sem copiar um PID de outro exemplo.
Retomar uma sessão desconectada
screen -r backup
O comando anterior retoma uma sessão desconectada chamada backup. Se ela estiver ligada a outro terminal, confirme primeiro quem a usa. A forma seguinte desconecta a tela anterior e conecta a sessão à tela atual:
screen -d -r backup
Essa operação pode tirar a tela de outra pessoa que usa a mesma conta. Ela não é uma reinicialização da tarefa; escolha a sessão correta e coordene o uso antes de executá-la.
Usar várias janelas na mesma sessão
Criar e nomear janelas
Use Ctrl+A, c para criar outra janela e Ctrl+A, A maiúsculo para nomeá-la. Por exemplo, mantenha uma janela para a tarefa, outra para logs e outra para consultas ao sistema. Alterar o título ajuda a reconhecê-la sem mudar o programa em execução.
Alternar entre janelas
Alterne com Ctrl+A, n e Ctrl+A, p, ambos minúsculos. A lista aberta por Ctrl+A, " permite escolher entre várias janelas.
Encerrar janelas e sessões corretamente
Quando a tarefa tiver terminado e você quiser fechar o shell daquela janela, execute:
exit
Ao fechar a última janela, a sessão termina na configuração padrão. Para apenas desconectar a tela e preservar a tarefa, use Ctrl+A, d. Encerre programas pelo procedimento próprio antes de fechar uma janela; Ctrl+A, k força seu encerramento após confirmação e pode causar perda de trabalho.
Consultar a rolagem e gravar logs
Consultar saídas anteriores
Use Ctrl+A, [ para entrar no modo de cópia e rolagem. Consulte saídas anteriores com as setas; use Ctrl+B e Ctrl+F para recuar ou avançar uma tela e pressione Esc para sair. O tamanho do histórico depende da configuração; a opção -h permite definir a quantidade de linhas, como neste exemplo de 10.000:
screen -h 10000 -S analysis
Gravar a saída da janela em arquivo
Use Ctrl+A, H maiúsculo para iniciar ou parar o log da janela atual. O padrão é screenlog.N, sendo N o número da janela; na janela zero, screenlog.0. Para iniciar uma sessão com registro e nome de arquivo explícito:
screen -L -Logfile backup-screen.log -S backup
O log registra saídas a partir da ativação, sem recuperar automaticamente o histórico anterior, e acrescenta conteúdo a um arquivo existente. Pode haver atraso até a gravação em disco. Esses detalhes constam na documentação oficial de logs. Confira o diretório, o espaço disponível e as permissões; dados sensíveis exibidos na tela também podem ser gravados.
Resolver problemas e proteger o acesso
Quando a sessão permanece Attached
Uma sessão pode continuar marcada Attached após uma falha de rede. Confirme se existe outro terminal ativo antes de usar screen -d -r nome-da-sessao; substitua o marcador pelo nome real. Volte a executar screen -ls se a seleção for ambígua.
Para entradas Dead ou inacessíveis, confirme antes se os processos ainda existem. screen -wipe remove entradas de sockets mortos identificadas pelo Screen; não recupera tarefas nem deve ser usado como motivo para encerrar processos ou apagar diretórios de sessões manualmente. A referência das opções de inicialização explica a seleção e a limpeza.
Permissões de acesso para sessões da mesma conta
Quem usa a mesma conta pode ter acesso às suas sessões. Chaves SSH diferentes não isolam pessoas conectadas com o mesmo usuário do sistema: prefira contas separadas e não deixe um shell com privilégios administrativos ou dados sensíveis disponíveis na sessão.
Se a tarefa morrer ao sair da conta, confira a política de encerramento de processos do sistema. A opção KillUserProcesses=yes do systemd-logind pode encerrar processos do escopo da sessão, incluindo Screen. Peça ao administrador que examine a configuração efetiva e a forma adequada de executar a tarefa; não presuma que autodetach substitua essa política.
Comparação de screen, nohup, tmux, systemd
| Ferramentas | Tarefas adequadas | Principais características |
|---|---|---|
screen |
Tarefas de terminal interativas que precisam de reconexão | Permite desconectar e retomar a sessão, com várias janelas. |
tmux |
Tarefas interativas e divisão complexa de telas | Gerencia janelas e painéis, com configuração de atalhos e layout. |
nohup |
Tarefas simples em lote não interativas | Ignora SIGHUP, mas não restaura a tela do terminal. |
systemd |
Serviços que devem estar sempre em execução | Permite configurar início no boot, reinício em falhas, dependências e logs. |
Para comparar com uma execução sem interação, consulte como usar nohup e redirecionar a saída.
Perguntas frequentes
A tarefa continuará mesmo se a conexão SSH for desconectada?
Em condições normais, com autodetach ativo e os processos ainda em execução, sim. Screen não impede falhas do programa, reinicializações, encerramento pelo administrador ou políticas que matem processos no logout.
O que devo fazer se várias sessões aparecerem ao usar screen -r?
Depois de verificar a lista com screen -ls, especifique o nome da sessão ou o identificador completo como screen -r backup. Criar sessões com nomes significativos pode reduzir erros de seleção.
O que devo fazer se Ctrl+A entrar em conflito com o atalho de um programa?
Pressione Ctrl+A e depois a minúsculo para enviar esse caractere ao programa. Para mudar o prefixo do Screen, use a opção -e ou a diretiva escape em ~/.screenrc, mantendo a documentação da equipe de acordo com a configuração.
As sessões do Screen podem ser restauradas após uma reinicialização?
Não. O Screen mantém apenas os processos e terminais virtuais em um sistema em execução; ele não restaura automaticamente sessões e processos após uma reinicialização. Se você precisar de inicialização automática após uma reinicialização, configure o serviço com systemd ou use um agendador adequado para a tarefa.
Escolher como manter a tarefa em execução
Para trabalho interativo, crie uma sessão com screen -S nome, desconecte a tela com Ctrl+A, d e retome com screen -r nome. Substitua nome pelo identificador escolhido. Faça um teste com uma tarefa descartável antes de confiar uma operação importante ao ambiente remoto.
Se o programa precisa iniciar no boot ou reiniciar após falhas, configure um serviço ou agendador apropriado. Use Screen quando a necessidade for retomar um terminal de trabalho, mantendo os limites de acesso e de persistência do sistema.




