Um pouco sobre o screen
Por: Flavio Torres - ftorres[@]ymail.com
Publicado em: 19/02/2008
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
ví 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 anteriomente 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
irá fazer 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á saír 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 espaco ) é 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 estavámos 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á instantâneamente
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 usuario 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.
MrBiTs - linux-board em yahoogroups |