Pedro Pereira

Linux, Cisco, *BSD's, um pouco de Windows e o que mais eu achar interessante :)

Como funciona o comando Screen no Linux


WP Greet Box icon
Olá! Se você gostou do blog, assine o feed RSS para não perder as próximas atualizações!

No meu serviço, eu preciso administrar vários servidores a partir de uma estação Windows utilizando o programa PuTTY. Geralmente, eu fico com umas 6 ou 10 (às vezes, bem mais que isso) janelas abertas.

Encontrei uma ferramenta que facilitou a minha vida quando tenho que trabalhar com várias conexões a servidores através do PuTTY. O nome é screen. Abaixo, vou descrever as funcionalidades desta ferramenta que achei mais úteis.

Instalação

No CentOS 5.3, o screen não é instalado por padrão. Porém ele existe no repositório “base” da distribuição. Portanto, para instalá-lo:

# yum -y install screen

Pronto! O screen e todas as dependências necessárias serão instaladas na sua máquina.

Trabalhar como um “VNC” no shell

Com o screen, é possível um usuário ver o que o outro está digitando e vice-versa (ambos os usuários podem digitar os comandos e ambos verão os resultados). Os dois usuários devem estar logados no mesmo servidor com o mesmo usuário (root, por exemplo).

Para iniciar a sessão screen:
# screen -s sessao

Para o outro usuário se conectar a essa sessão e poder interagir:
# screen -x sessao

Por exemplo, se o João criar uma sessão chamada “nome da sessao” usando o root a Maria pode interagir com esta sessão digitando:

# screen -x “nome da sessao”

Lembrando que Maria também deve estar logada como root. Não há limites quanto à quantidade de usuários que podem se conectar a uma sessão.

A palavra “sessao” nos comandos acima, pode ser trocada por qualquer outra palavra. Se o nome da sessão for conter espaços, utilize “nome de sessão com espaços” (entre aspas duplas).

Para finalizar a sessão, é só digitar Ctrl + D ou “exit”. Assim, apenas a sessão screen será finalizada, não a sessão SSH.

Várias conexões em uma mesma janela do PuTTY

Em uma mesma janela do PuTTY você pode abrir várias conexões para vários servidores diferentes utilizando o screen. Funciona assim:

  • Digite “screen” no shell, sem nenhum parâmetro
  • Você já estará na janela 0 do screen. Crie uma nova janela digitando Ctrl – a c.
  • Você será enviado para a janela 1 do screen automaticamente. Este shell é  completamente independente do outro na janela 0, ou seja, você pode se conectar a outro servidor a partir deste shell também.
  • Para avançar do shell 0 para o shell 1, utilize Ctrl – a n. Para ir do shell 1 para o shell 0, digite Ctrl – a p.
  • Para fechar um shell, digite exit no shell. Os outros shells permanecerão ativos e realizando as tarefas que você iniciou.

Obs.: Comandos como Ctrl – a p devem ser executados da seguinte forma: pressiona-se Ctrl + a simultaneamente e, após soltar as teclas Ctrl + a pressiona-se a tecla p.

Se conectando a uma sessão

Se ocorrer algum problema e você for desconectado da sua sessão screen sem antes finalizá-la, você pode se conectar no servidor novamente via SSH e também se conectar à sessão anterior do screen sem ter perdido nenhum dado. Faça o seguinte:

Verifique quais as sessões que estão sendo executadas:

# screen -ls

A saída desse comando será algo como:
There is a screen on:
8228.pts-4.curio        (Detached)
1 Socket in /var/run/screen/S-root.

Para se conectar à sessão existente:

# screen -r 8228.pts-4.curio

Pronto, você não terá perdido nenhum dado das suas sessões que estavam sendo executadas via screen.

Espero que ajude vocês no dia-a-dia. Qualquer dúvida, deixe seu comentário!

Compartilhe o post! These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Webnews
  • Digg
  • del.icio.us
  • StumbleUpon
  • Reddit
  • Ask
  • Bloglines
  • email
  • Facebook
  • Furl
  • Google Bookmarks
  • LinkedIn
  • Live-MSN
  • Pownce
  • Print
  • Rec6
  • Slashdot
  • Technorati
  • TwitThis

Posts relacionados:

  • Instalando e configurando o JBoss no Linux O JBoss é um application server para aplicativos web desenvolvidos...
  • Boot.kernel.org: Inicializando o Linux pela Internet Muito embora o BKO (vou me referir ao boot.kernel.org assim)...
  • SSH Port Forwarding Muita gente usa o SSH para conseguir acesso a shells...
  • Como instalar o Easy Peasy no seu netbook Há alguns anos atrás eu comprei um EEE PC 701....
  • Como configurar e usar o sudo Muitas vezes você precisa executar um programa com as credenciais...



  • 8 Comentários

    1. Robson

      17|Jul|2009 1

      Faltou você colocar umas telas para ver a funcionalidade.

    2. Pedro Pereira

      21|Jul|2009 2

      Robson,

      Não coloquei screenshots por ser uma interface de texto normal. Quero dizer, se você olhar uma tela do Putty sem usar o screen e outra usando o screen, você não irá ver a diferença.

      []‘s

      Pedro

    3. uberVU - social comments

      11|Dec|2009 3

      Social comments and analytics for this post…

      This post was mentioned on Twitter by pogao: Aprenda a utilizar o comando screen no Linux: http://bit.ly/ruLtB...

    4. Felipe Gabriel

      10|Feb|2010 4

      Muito Bom !
      Otimo Tutorial Passo a Passo bem elaborado !

      Valeu.

    5. Como ver outros tty/pts

      12|Feb|2011 5

      [...] outros tty/pts GA_googleFillSlot("300×250-forum-last"); pra começo pode ler este material. Como utilizar o comando screen no Linux | Pedro Pereira eu usava bastante quando queria fazer um download, no servidor, que iria demorar, deixava rodando [...]

    6. Regio

      18|Jan|2012 6

      Bom Post.

      Eu já conhecia o Sreen mas uma duvida minha ainda persiste:

      Como evitar que o usuario digite exit e saia da sessão?

      Grato

      Regio

    7. Pedro Pereira

      20|Jan|2012 7

      @Regio,

      Cara, até onde eu sei não existe uma forma de controlar isso. Uma possível solução (não muito bonita) pode ser controlar o que pode ser executado usando o sudo. Mas você precisa verificar se o sudo se aplicaria ao seu caso (com poucos detalhes eu não tenho como te falar).

      []‘s
      Pedro Pereira.

    8. barataaway

      24|Jan|2012 8

      No RHEL, pra iniciar (mais cabido “nomear”) a sessão utiliza-se o -S e não o -s.

      via man>

      -S sessionname
      When creating a new session, this option can be used to specify a
      meaningful name for the session. This name identifies the session
      for “screen -list” and “screen -r” actions. It substitutes the
      default [tty.host] suffix.

      -s sets the default shell to the program specified, instead of the
      value in the environment variable $SHELL (or “/bin/sh” if not
      defined). This can also be defined through the “shell” .screenrc
      command.

      Um abraço e obrigado pelas dicas.

      barataaway


    Deixe seu comentário!

    Acompanhe!

      Assine o feed RSS! Me acompanhe no Twitter! Me adicione no LinkedIn!

    Creative Commons


    Mais lidos