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: 39.425 ]

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

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

Ajustando o desempenho de discos rígidos

Software Livre é o futuro

Escrevendo scripts no GIMP, pintando a cobra

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

Leitura recomendada

Clonar FreeBSD pela rede e sem downtime

O Centro de Controle YaST

LIRC - Linux Infrared Remote Control

O Mestre, o Tecnólogo e o Aprendiz

Como criar pacotes para o Arch Linux (parte 2) - pacotes svn e cvs

  
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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts