Ferramenta screen

A Ferramento screen é um gerenciador de janelas em tela cheia que multiplexa um terminal físico entre vários processos, shells normalmente interativos. Cada terminal virtual fornece as funções do terminal DEC VT100.

Esta Ferramenta permite várias funções de controle do ANSI X3.64 (ISO 6429) e ISO 2022 de normas (por exemplo, inserir e excluir linha além de suporte a múltiplos conjuntos de caracteres). Possui um buffer de histórico para scrollback em cada terminal virtual, há um mecanismo de copiar e colar que permite ao usuário mover regiões de texto entre janelas.

Quando um terminal screen é chamado, ele cria uma única janela com um shell e, em seguida, libera o acesso para que você possa usar o programa como faria normalmente. Então, a qualquer momento, você pode criar novas (full-screen) Janelas com outros programas em si (incluindo mais shells), matar a janela atual, visualizar uma lista dos terminais ativos, desabilitar o registro da saída de ligar e desligar, copiar texto entre janelas, ver o histórico de scrollback, alternar entre janelas, e mais.

Todas as janelas executam seus programas completamente independentes um do outro. Programas de continuam a executar mesmo quando sua janela não está visível e, até quando a sessão de tela é separada do terminal de usuários.

A republicação de Cleber J. Santos, a seguir mostra alguns detalhes para trabalharmos com esta ferramenta poderosa.

Autor: Cleber J Santos

Introdução

Para quem já está familiarizado com os terminais virtuais do Linux, vai achar muito similar essa ferramenta porreta chamada Screen, que é um gerenciador de janelas que trás muitos recursos, desenvolvido pelo projeto GNU.

Podemos até dizer que quem utiliza o Screen, utiliza-o para diversas finalidades, eu por exemplo uso para poder abrir outras sessões para gestão de servidores, em janelas separadas em uma mesma sessão SSH e ainda poder compartilhar essas mesmas sessões para poder ensinar ou até mesmo apenas pelo prazer de compartilhar.

Para se ter idéia, enquanto em uma sessão estou compilando o Zope, na outra sessão estou fazendo download de aplicações que necessitarei, e ainda posso abrir mais uma sessão enquanto aguardo o download e a compilação, sendo que a qualquer momento posso voltar novamente ver o andamento das coisas.

Mas o Screen não se limita somente a isso, olhado o man page (man screen) dele você encontrará muitas informações úteis, e claro, aprenderá ainda mais sobre este comando.

Agora deixemos de lenga lenga e vamos ao que interessa...

Requisitos

Uma distribuição Linux, ou qualquer Unix, também pode ser da família BSD, claro, eu estou usando Slackware no qual já veio com o screen instalado. Caso seu sistema não tenha recomendo a você o Google, nele você vai achar o pacote a ser instalado, e como a idéia aqui não é ensinar como instalar o Screen e sim explorar os recursos oferecidos por ele, terá que consultar o oráculo Google ou acessar o site oficial do Screen e seguir a documentação, mas acredito ser difícil uma distro Linux não ter o screen.

Utilizando o Screen

Digamos que você deseja acessar remotamente uma máquina via SSH e efetuar duas operações de uma só vez, enquanto ensina o seu amigo que está do outro lado do mundo a configurar o Apache, ainda está compilando um Zope.

Após ter logado na máquina remota execute o Screen:

$ screen

Você vai dizer, "Uai, mas não aconteceu nada?". Eu poderia ter dado um clear para limpar a tela ué, seria este um outro jeito de limpar a tela? Não!.. Execute "ps -aux" e veja o processo do screen rolando, o que significa que neste momento já está em uma janela do Screen.

Certo, e daí? Relaxa, agora vamos ao primeiro comando básico:

$ screen -ls
   There is a screen on:
        4270.pts-1.sinapse      (Attached)
   1 Socket in /home/cleber/.screen.

Com este comando acabamos de listar as sessões abertas do screen onde a sessão marcada com (Attached) é a sessão que você está agora. Além de múltiplas janelas você pode abrir múltiplas sessões, observe que este comando lista as sessões e não as janelas. Então vamos criar a segunda janela virtual porque a primeira já abre por padrão quando iniciamos o Screen.

Para isso pressione "Ctrl+a" simultaneamente, solte e em seguida pressione "c", a tela será limpa novamente, agora temos uma segunda janela virtual do screen. Para se navegar entre as janelas utilize o atalho "C-a n" (n de next, isto é, próxima janela). Ah, para facilitar vamos usar alguns atalhos, dessa forma teremos algo contraído, por exemplo, o comando acima: "C-a n" quer dizer "Ctrl+a n", sacou?

Então maravilha, se familiarize com estes atalhos pois é exatamente assim que você também verá no man page do screen, da mesma forma que temos o comando para seguir, temos ainda o "C-a p" (p de previous o mesmo que anterior), se desejar ainda poderá usar "C-a a", que também servirá para navegar entre as janelas. Pronto!

Agora você já pode abrir quantas janelas quiser e/ou precisar e deixar qualquer processo rolando nelas.

Agora imagine que na hora que você se logou em um servidor e estava lá a mais de 20 minutos em uma compilação, do nada por algum motivo sua conexão é cortada, ou sua janela do terminal é fechada, ou ainda pior, um técnico de energia elétrica mexeu em um fio que desligou seu computador, cortando assim sua conexão com o servidor...

Ai é a grande sacada, ao invés de sair batendo no vizinho ou quebrando o técnico de telefonia ou de energia elétrica, você poderá respirar fundo e se perguntar, deve ter alguma forma de recuperar isso não? Ou, e se eu precisar fechar minha conexão ssh para mais tarde recuperá-la? Ou seja, como fechar a sessão ssh sem finalizar a(s) sessão(ões) do Screen? Simples, execute "C-a d" que irá retornar [detached], que quer dizer descolar.

E se agora você executar "screen -ls", verá a sessão que você acabou de sair marcada como (Detached), as vidas de seus vizinhos e dos técnicos acabam de ser salvas.

E melhor que isso, digamos que você teve que sair correndo de casa para o trabalho, então você poderá fechar a sessão ssh e desligar tranquilamente seu computador, pois chegando no trabalho você poderá ver o andamento dos processos deixados nas janelas ou acessar seus clientes, como?

Acesse a máquina via ssh novamente e digite "screen -r". Tá-dháaaa! Legal isso né!

Que tal agora compartilhar essa sessão com um amigo seu? Uáu! Dá para fazer isso?

Sim! Peça para seu amigo acessar a sua máquina via ssh com o mesmo usuário que você esta logado, assim que ele logar peça para executar "screen -x", com este comando ele se conectará à mesma sessão que você esta e desta forma tudo o que você e ele fizerem serão vistos pelos dois.

O mais bacana é que você pode conectar quantas pessoas quiser a uma sessão do Screen. CARACAS... Fala sério, isso é muito massa, agora você poderá mostrar para seu amigo como se compila o Apache ou qualquer outra aplicação.

Para fechar uma janela basta digitar "exit" na última janela, o Screen será finalizado. Com estes comandos básicos já é possível fazer muita coisa, agora se você der uma olhada na man page (man screen) verá que você não aprendeu nada sobre o screen, pois ainda existe muita coisa que pode ser feita com ele, sua imaginação será o limite para a quantidade de possibilidades que o screen te fornece.

Dicas importantes


Comentários