Um pouco sobre o screen

Publicado por Flavio Torres em 15/06/2009

[ Hits: 87.776 ]

 


Um pouco sobre o screen



A beleza do screen está no fato de que, se sua sessão principal falhar (o putty fechar), tudo o que você está rodando, mesmo em fg, continuará rodando com nenhuma perda de dados. Nunca vi um screen travar ou cair, exceto em casos de falha total da máquina Linux. Tenho sessões screen rodando há 20, 30 dias.

Para conquistar vocês, vai um pequeno guia de referência. Obviamente, se não tivermos o screen instalado, devemos instalá-lo. Ele está empacotado para virtualmente todas as distribuições que eu já vi. O já clássico "man screen" ajuda bastante

1) Iniciando o screen:

O screen pode ser rodado na instância do usuário, não sendo necessário ser root da máquina. O comando é:

screen

Em algumas instalações, uma tela de about será mostrada com uma mensagem de pressionar algo para finalizar. Finalizaremos a tela de about e cairemos na nossa sessão screen. Se o usuário já tiver uma sessão screen rodando e utilizar o comando acima, outra sessão será criada.

2) Acessando uma sessão screen anteriormente criada

screen -x

Anexaremos nossa sessão screen previamente aberta. Se tivermos mais de uma sessão, uma lista delas será mostrada, mais ou menos como abaixo:

screen -x
There are several suitable screens on:
~ 9984.pts-1.rimmon (Detached)
~ 9966.pts-1.rimmon (Detached)
~ 9948.pts-1.rimmon (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.

Vejamos que há um comentário dizendo que a sessão está "Detached". Sessões Attached estão sendo utilizadas nesse momento, enquanto Detached são sessões das quais o usuário se desconectou, sem encerrá-las.

Fazendo:

screen -r 9984.pts-1.rimmon

A sessão entrará em estado attached e trabalharemos com ela. O comando:

screen -d 9984.pts-1.rimmon

fará o detach da sessão correspondente.

Meu conselho é manter uma e somente uma sessão aberta, mas vai da necessidade do usuário ter mais.

3) Utilizando

3.1) Criando novos terminais na sessão screen

Uma sessão screen pode ter vários terminais. Quando a iniciamos, temos somente um. Como o interesse é trabalhar com várias "janelas" ou "abas", vamos criá-las.

Todos os comandos de teclas do screen iniciam-se através da combinação da tecla CONTROL e da tecla a. Essa combinação é representada, na man page do screen, como C-a. O comando para criar um novo terminal no screen é o C. Então, pressionamos C-a c criamos um novo terminal e já entramos diretamente nele. Temos agora 2 terminais. Pressionemos o comando de criação mais duas vezes, e teremos 4 terminais

3.2) Destruindo terminais na sessão screen

Um terminal nada mais é do que um shell de usuário. Da mesma forma que utilizamos o comando exit ou C-d para encerrar um shell, utilizamos C-d para encerrar um terminal screen. Isso não irá fechar a sessão screen nem nos fará sair dela, a não ser que o terminal em questão seja o último aberto da sessão.

3.3) Navegando entre terminais na sessão screen

Temos algumas combinações de teclas que nos permitem navegar entre nossos terminais abertos.

a) C-a n e C-a p nos fazem navegar para os terminais próximo e anterior (next, previous).

b) C-a [0-9] permite-nos acessar diretamente um terminal, num máximo de 10. Se tivermos mais terminais abertos, nos valemos do comandos C-a p e C-a n.

c) C-a " (aspa dupla) mostrará uma listagem de todos os terminais que temos abertos e, através das teclas de navegação, poderemos selecionar o que queremos e acessá-lo.

d) C-a (tecla de espaço) é similar ao comando C-a n

3.4) Saindo de uma sessão screen (detach)

O comando C-a d nos fará abandonar a sessão screen sem, entretanto, fechá-la. Todos os terminais abertos permanecerão abertos e todos os processos que deixamos rodando continuarão rodando. Os terminais permanecerão exatamente no mesmo estado em que os deixamos. Para retomar o trabalho, utilizamos o comando screen -x. Abriremos então o terminal screen em que estávamos quando executamos o detach

3.5) Encerrando uma sessão screen

Podemos executar o comando exit ( ou C-d ) até fecharmos todos os terminais screen que temos. Ao fechar o último, screen será finalizado. Há o comando C-a \ que terminará instantaneamente todos os terminais screen que temos e finalizará o screen. Todos os processos que estamos rodando serão mortos. Obviamente, uma confirmação será pedida.

4) Caso interessante

O screen pode ser utilizado para fins educativos ou colaborativos, permitindo que usuários remotamente conectados à máquina vejam o que está acontecendo em uma sessão screen e até mesmo participando do trabalho. Para isso, screen deve ser iniciado em um usuário onde pelo menos duas pessoas possam conectar-se. Um usuário distinto não consegue ver o screen de outro usuário. Por exemplo, se o usuário mrbits está utilizando screen e o usuário cristiano acessa, ele jamais conseguirá ver a screen do mrbits. Para que mrbits e cristiano trabalhem colaborativamente, eles devem ser o mesmo usuário para o sistema. Obviamente, root tem acesso a tudo.

Distribuições como Ubuntu já vêm com um .screenrc cheio de flores e perfumarias.

Dica disponível no site do autor: www.flaviotorres.com.br - Um pouco sobre screen

Outras dicas deste autor

Scaneando IP's, retornando NetBIOS ou endereços MAC.

Não esquecendo o root logado

Lente de aumento no Linux

Limpar tela com comando exit

Configurando SFTP modo CHROOTED com o scponly

Leitura recomendada

Solução para o problema ao iniciar o JACK no Kubuntu

ArchLinux-BR: Grupo Brasileiro de usuários do ArchLinux

Lendo DVD protegido no Linux

Eliminando bordas feias ao usar Compiz no Xfce

Descompactando arquivos KDE sem complicação

  

Comentários
[1] Comentário enviado por chimico em 27/11/2011 - 14:11h

@fla_torres

Muito boa dica amigo, estou usando o screen a algum tempo e é uma boa, porque me permite deixar habilitada apenas uma tty no sistema e quando estou no init 1 (single user) consigo rodar mais de um terminal, bem como fazê-lo no rxvt, por exemplo, que não tem abas.
Favoritado!

Deus te abençõe



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts