Skip to content. | Skip to navigation

Cleber J Santos

Sections
Personal tools
Document Actions

Screen, Eita ferramenta porreta!

Por admin em 31-12-2008 12:23

Introdução


    Para quem já está familiarizado com os terminais virtuais do Linux, vai achar muito similar, essa ferramenta porreta chamada Screen, é um gerenciador de janelas que trás muitos recursos, desenvolvido pelo projeto GNU. Podemos até dizer que para quem utiliza o Screen, utiliza 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 irei necessitar, 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ê irá 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 a família BSD, claro, eu estou usando Slackware no qual já veio com o screen instalado, caso seu sistema não tenham 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, você terá que consultar o oráculo Google ou acessar o site http://www.gnu.org/software/screen/screen.html e segir a documentação, mas acredito ser difícil uma distro Linux não ter o screen.


Utilizando


    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, você ainda está compilando um Zope

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

   Sinapse:~$ 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, que significa que, neste momento você já está em uma janela do Screen.
Certo, e daí? Relaxa, agora vamos ao primeiro comando básico:

   Sinapse:~$ 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 multiplas janelas você pode abrir multiplas 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á rertornar [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 tranqüilamente 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 irá se conectar a mesma sessão que você esta e desta forma tudo o que você e ele fizerem serão visto 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 feito com ele, sua imaginação será o limite para a quantidade de possibilidades que o screen te fornece.



Dicas importantes.


- Sempre é bem vindo visitar o Oráculo Google, ele tem muito a te oferecer.
- O man page é uma ótima forma de você não fazer peguntas em listas sem a necessidade.
- Uma boa referencia do screen é http://www.gnu.org/software/screen/screen.html

Dúvidas, críticas e sugestões, doações hehehehe, podem sedem contar comigo, até a próxima.