Screen, eita ferramenta porreta!

Quem já está familiarizado com os terminais virtuais do Linux, vai achar muito similar (e útil) essa ferramenta porreta chamada Screen.

[ Hits: 37.705 ]

Por: Cleber J Santos em 15/01/2009


Screen, Eita ferramenta porreta!



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


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

(Este artigo foi publicado originalmente em http://www.cleberjsantos.com.br)

   

Páginas do artigo
   1. Screen, Eita ferramenta porreta!
Outros artigos deste autor

FreeBSD + Zope/Plone, uma idéia frustrante?

Software Livre é o futuro

Escrevendo scripts no GIMP, pintando a cobra

Assembler no Linux

Linux (kernel) - A história do seu criador

Leitura recomendada

Programação (III) - Programação Orientada a Objetos (POO)

Dropbox - Integração em multiplataformas

Compilação distribuída usando o distcc

Computação Distribuída com TORQUE Resource Manager

Logstash + Redis + Elasticsearch + Kibana - Gerenciando logs

  
Comentários
[1] Comentário enviado por vsmoraes em 15/01/2009 - 13:42h

Screen realmente é uma ótima ferramenta, geralmente utilizo muito no meu Home Server para fazer atualizações e baixar vários arquivos sem ter que depender de qualquer outro pacote mais complexo.

Em relação ao artigo em si, ficou bom. Mas acho que poderia ser melhorado se a sessão "Utilizando o Screen" fosse desmembrada.
Da forma que está ficou um tanto confuso e com a impressão de ter sido escrito às pressas. Fora isso, o conteúdo está ótimo e escrito de forma fácil de entender.

Muito bom o artigo.

[2] Comentário enviado por cleberjsantos em 15/01/2009 - 20:45h

E Obrigado pela dica, na verdade acho que apenas deixei as coisas se embarassar um bucado, mas mesmo assim a dica é ótima, nos próximos tomo este cuidado ;)

[3] Comentário enviado por tatubhz em 16/01/2009 - 11:14h

Essa pagina tb tem muita coisa!!! dê uma olhada!!! http://www.dicas-l.com.br/artigos/linux-modotexto/coluna07.html

[4] Comentário enviado por cleberjsantos em 16/01/2009 - 11:58h

Opa, legal também, mas neste link também é bem simples, é uma introdução, mas é sempre bom. Quanto mais materiais melhor né ;)

Valeu

[5] Comentário enviado por lanux em 16/01/2009 - 14:32h

Screen representa bem a filosofia Linux de fazer muito bem algo específico. Com ele monitor, mouse e teclado deixam de ser necessários na administração de servidores. Eu costumo colocar no ~/.bashrc o alias:

alias screen='screen -d -RR'


[6] Comentário enviado por schaf em 16/01/2009 - 15:18h

Muito bom mesmo!
São dicas úteis, eficientes, espertas e bem escritas como esta que nos convencem que o universo UNIX é algo sempre inteligentíssimo, surpreendente e gratificante a cada dia.
Parabéns!

[7] Comentário enviado por cleberjsantos em 17/01/2009 - 09:52h

oh ho, com certeza meu amigo lanux, a filosofia Linux toda acredito que aplica-se muito bem em diversas das aplicações que o compõe, e claro uma delas com certeza é o Screen, e sim schaf, é realmente muito gratificante ter não apenas materiais como este, mas também ter contribuições como essas aqui ;)

PS. lanux, legal, eu não tinha pensado nisso, colocar no .bashrc um alias, bacana mesmo, puts fica ai mais uma dica.

[8] Comentário enviado por chaplinux em 03/05/2011 - 02:04h

Queria saber como ao executar o screen para criação de janelas , como eu poderia ao mesmo tempo que se executa o screen ele executasse um comando como wget URL e saisse do terminal Screen tipo CTRL + ad. sem matar o processo que esta em execução dentro to terminal (screen). Quais seria os Parametros?


Contribuir com comentário