Todo administrador de sistemas baseado em Unix deveria conhecer o screen, pois ele facilita demais a vida de quem precisa se conectar em dezenas ou centenas de servidores e ainda manter tudo isso organizado e produtivo.

Ao final deste artigo você saberá:

  • O que é o screen;
  • Como o screen pode te ajudar no gerenciamento de conexões remotas (SSH/Telnet);
  • Alguns truques legais que nenhum terminal te oferece;

Uma coisa é certa: depois que você utilizar o screen pela primeira vez não tem mais volta, não viverá mais sem ele.
O screen é um gerenciador e emulador de terminais VT100/ANSI. Se você precisa se conectar constantemente via SSH ou Telnet com dezenas ou centenas de hosts remotos, o screen é a melhor solução.
Com o screen você pode utilizar milhares de terminais virtuais e ainda utilizar recursos avançados como: várias janelas na mesma tela (window split), copy/paste, compartilhar a mesma janela com outra pessoa, terminal protegido por senha, logar o conteúdo da janela e etc.

Uma das coisas que eu mais curto no screen, é a possibilidade de poder manter as conexões SSH abertas com os servidores remotos e suspender (detach) somente o screen e no dia seguinte, resumir o screen (reatach) com todas as conexões SSH ainda conectadas.
OBS: Se você desligar a máquina onde a sessão do screen está rodando, todas as conexões serão perdidas.

O screen também permite criar uma organização bacana para uma equipe de trabalho de vários analistas, como a que utilizamos aqui na empresa e que precisam se conectar com centenas de hosts remotos durante o dia. Depois que você utilizar o screen pela primeira vez não tem mais volta, não viverá mais sem ele.
Temos um servidor Linux onde cada analista tem seu usuário e senha para se logar via SSH e, neste servidor cada usuário tem sua própria sessão screen aberta com dezenas de conexões estabelecidas com hosts remotos. Ao final do dia, invés de fechar as conexões SSH com os hosts remotos, o usuário apenas suspende (detach) sua sessão screen, sem finalizar as conexões remotas. No dia seguinte, basta se conectar a este servidor e resumir a sessão screen para continuar o trabalho com todas as conexões remotas que permaneceram abertas.

O screen não vem instalado por padrão no Linux mas está disponível para a instalação através do gerenciador de pacotes.

Chega de explicações e vamos a alguns exemplos de utilização do screen.

# Abre o screen
$ screen

# Abre o screen com um nome para a sessão
$ screen -S rodrigo

# Lista sessões de screen abertas
$ screen -ls

# Resume uma sessão suspensa
$ screen -r

# Se tiver mais de uma sessão aberta, escolha qual será resumida
$ screen -r rodrigo

# Resume a sessão se já estiver em uso por outra pessoa. Ambos poderão interagir com a sessão (bacana para treinamento de pessoal)
$ screen -x rodrigo

Assim que o screen estiver aberto, todos os comandos deverão ser precedidos por ctrl-a.

# Abre novo terminal
ctrl-a c

# Lista os terminais abertos momentaneamente
ctrl-a w

# Lista de terminais abertos para seleção
ctrl-a “

# Vai para o terminal 5
ctrl-a 5

# Nomear terminal
ctrl-a A

# Iniciar/finalizar log do terminal atual
ctrl-a H

# Divide a janela horizontalmente (window split)
ctrl-a S

# Divide a janela verticalmente (lado a lado)
ctrl-a |

# Alterna entre terminais virtuais quando em window split
ctrl-a tab

# Fecha a divisão de telas
ctrl-a Q

# Fecha o terminal
ctrl-d
ctrl-a k

# Suspende a sessão do screen (detach)
ctrl-a d

# Lista de todas as teclas de comando do screen
ctrl-a :help

O screen também permite a personalização através de arquivos .screenrc, assim você pode automatizar algumas coisas, remapear teclas de atalhos, personalizar uma barra de status e outras coisas.

Para aguçar a sua curiosidade, utilize este comando dentro do screen após abrir alguns terminais virtuais:

ctrl-a
:hardstatus alwayslastline "%{b kw}%H %{r}%1` %{w}| %{g}%c %{w}| %{y}%d.%m.%Y %{w}| %{g}%l %{w}| %{-b kw}%u %-Lw%{= rW}%50> %n%f %t %{-}%+Lw%<"

Fique a vontade para deixar o seu comentário logo abaixo e até a próxima!

Comentários

comentários