terça-feira, 30 de outubro de 2012

Administre seu servidor com inteligência, use o Screen


Já tem um tempão que gostaria de postar algo sobre o comando screen, acho que chegou a hora. Essa ferramneta é indispensável para qualquer administrador de servidores *UNIX like*. Para ajudar a entender a importancia desse comando segue uma rápida história que acontece muito na vida de quem administra um servidor unix ou linux.

Um belo dia você é acionado pelo sobreaviso da empresa onde trabalha ou presta serviço e precisa acessar o servidor WEB de forma remota, claro você usa o SSH para isso, até ai tudo bem. No decorrer da sua análise para descobrir o que esta acontecendo com o serviço WEB você executa algum tipo de ferramente de análise e precisa de outra aba do terminal para executar o tcpdump, o que você faz? Inicia outra sessão SSH para isso, agora você tem duas sessões SSH uma em cada aba do terminal.

Depois de algum tempo sua conexão com a internet cai, você perde todas as suas conexões antes estabelecidas, inclusive a do SSH. É isso mesmo você perdeu todo seu trabalho realizado até aquele momento. Infelizmente você precisa acessar o servidor novamente e começar tudo de novo.

É ai que entra o comando screen, pense nele como se fosse aquelas abas do firefox com isso basta apenas uma conexão SSH com o servidor, e mesmo que sua internet caia não tem problema, com o screen você pode recuperar a conexão que estava usando antes de perder o acesso a internet, não perdendo nada do que estava fazendo. Vamos ao que interessa.

Instale o screen:
apt-get install screen

Um pouco do básico, para usar basta digitar screen e apertar enter:

Apartir desse momento você já esta no prompt do screen, onde você pode usar "Ctrl+A" para enviar comandos para o screen, como exercicio aperte "Ctrl+A" e depois ? para ver uma tela de ajuda mostrando os comandos que podem ser usados juntos com o "Ctrl+A": 

O comando "Ctrl+A" "c" serve para abrir outra janela dentro do screen, assim você pode rodar dois comandos ao mesmo tempo em uma conexão SSH e sem precisar colocar um dos comandos em background. Para os nossos testes não será necessário acessar nenhuma máquina de forma remota, basta abrir um terminal local. Vamos fazer um exercício para entendermos como o "Ctrl+A" "c" funciona, para esse exercicio precisamos saber que o comando "Ctrl+A" "n" serve para acessar as janelas que foram criadas. Abra um terminal, digite screen e crie mais duas janelas apertando duas vezes "Ctrl+A" "c". Agora execute o comando "top" e depois vá para a outra janela do screen com o comando "Ctrl+A" "n" e execute o comando "watch ls", execute novamente "Ctrl+A" "n" e execute o comando "netstat". Agora para você ver os comandos digitados basta ir para as suas respectivas janelas com o comando "Ctrl+A" "n". Perceba que em apenas um terminal você pode executar três comandos diferentes sem precisar colocar em background.

Você pode fechar uma das janelas criadas executando "exit" ou "Ctrl+A" "k", se você quiser apenas fechar a janela mas deixar o processo rodando execute "Ctrl+A" "d" (d=detach). Faça esse teste em uma das janelas criadas, execute "Ctrl+A" "d", agora liste as sessões do screen com o comando "screen -ls", depois de achar a sessão que você tinha feito o detach é só reestabelecer com o comando "screen -r nome-da-sessão": 


Você também pode dar nomes a sua sessão e executar o comando junto com o comando screen, neste exemplo vamos criar uma sessão dando um nome e executando o comando: 

$screen -S NomeSessao-LS ls /tmp

Agora posso executar o comando "Ctrl+A" "n" e depois listar "screen -ls" e se precisar recuperar a sessão que executei meu comando ou script "screen -r nome-da-sesao".

Dica tirada do viva o linux: 

Que tal agora compartilhar essa sessão com um amigo seu? 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. 


Nenhum comentário:

Postar um comentário