segunda-feira, 16 de maio de 2016

Screen :: Dicas de Administração de Vários Terminais Virtuais no Linux


O Screen é um recurso muito poderoso para administração de servidores. Ele te permite criar múltiplos terminais em background independentes da sessão do usuário, podendo gerenciar melhor os jobs que estão rodando lá. Melhor dizendo: Imagine que você precisa executar um Download ou um backup no servidor que poderá durar horas. Você acessa por SSH e executar a comando no bash, porém você precisaria ficar com o terminal aberto até o fim do processo ou criá-lo diretamente em background. Porém, o Screen te ajuda a executar essas tarefas de forma mais dinâmica criando sessões virtuais para os usuários interativas, onde você pode alternar entre as sessões utilizando somente atalhos de teclado e fechar sua sessão SSH sem maiores problemas para visualizar o processo depois.

Instalando o Screen

 # sudo apt-get install screen #Debian Like
 # sbopkg -i screen    # Slackware 14.* 
 # yum install screen # CentOS/RHEL   
 # dnf install screeen  # Fedora 

Criando uma Screen

Vamos supor que você necessite acessar o servidor via SSH e realizar um procedimento demorado de backup de alguma pasta ou atualização, mas para isso você precisa de uma sessão dedicada no servidor que não pode ser interrompida. Normalmente você teria que deixar seu terminal aberto até a conclusão do job, ou criá-lo em background sem herança com o bash que foi criado. Mas nesse caso, vamos fazer esse processo de maneira totalmente gerenciável, criando uma sessão virtual para o console utilizando o Screen.

Para criar uma sessão virtual digite:
 # screen  

Você pode notar que outro terminal foi iniciado, porém essa sessão ainda não está 'desanexada'. Vamos simular um comando e depois pressionar a combinação de teclas CTRL+A+D para separar (detached) a sessão e liberar o console para mais comandos:
 root@fidelis:/home/matheus# clamscan Downloads/ -r  
 Downloads/caracters03.jpg: OK  
 Downloads/worthy_v.1.0/js/template.js: OK  
 Downloads/worthy_v.1.0/js/custom.js: OK  
 Downloads/worthy_v.1.0/plugins/jquery.js: OK  
 Downloads/worthy_v.1.0/plugins/jquery.backstretch.min.js: OK  
 Downloads/worthy_v.1.0/plugins/jquery-1.11.1.min.map: OK  
 Downloads/worthy_v.1.0/plugins/jquery.appear.js: OK  
 D.......  
 [CTRL+A+D]  
Agora voltamos ao nosso terminal real.


Listar as Screens ativas

para listar as screens, basta utilizar o comando:
 # screen -ls  
 root@fidelis:/home/matheus# screen -ls  
 There is a screen on:  
      23661.pts-2.fidelis     (16-05-2016 13:19:03)     (Detached)  
 1 Socket in /var/run/screen/S-root.  
 root@fidelis:/home/matheus#   

Aqui veremos todas as screens que estão rodando no servidor, a ID da mesma e o status, no caso Atached ou Deatached.


Reanexando uma screen

Para voltar a utilizar uma screen ativa no servidor, basta utilizar o parâmetro -r e passar a ID da mesma que está em execução. No exemplo, a ID em questão é a 23661.
 # screen -r 23661  


Bloqueando uma Screen 

É possível bloquear a execução de uma screen com a senha do usuário na qual ela está ativa. Esse recurso é de grande valor para servidores que são gerenciados por várias pessoas afim de evitar zona. Para ativar esse recurso de Lock Screen, basta anexar a sua screen e utilizar os atalhos: Ctrl-A +x
 # screen -r 23661  
 # [CTRL-A +x]  


Colocando uma senha na Screen 

Esse passo é muito legal, e também muito útil para servidores que são gerenciados por muitas pessoas. No caso, você pode criar uma senha específica para a screen ao invés de ser compartilhada por usuários. O processo também é bem simples. Você deve editar/criar o arquivo .screenrc dentro da pasta onde a screen está rodando e colar dentro dele um password encriptado com o mkpasswd.
 root@fidelis:/home/matheus# mkpasswd nanoshots  #Encripta a senha
 KUZP/NGQMBd8U  #Senha gerada
 root@fidelis:/home/matheus# vim .screenrc  #Crie/Edite o arquivo

Dentro do arquivo, coloque o parâmetro password e a senha encriptada na frente do mesmo.



Navegando entre as Screens 

Para navegar de forma mais dinâmica entre as screens, você pode utilizar os atalhos de teclado a seguir:
 Ctrl+A+c – Criar uma nova Screen
 Ctrl+A+n – Mudar para a tela seguinte
 Ctrl+A+p – Mudar para a tela anterior


Criando uma screen com um nome específico

Caso o uso das screens esteja aumentando nos servidores, seria legal atribuir um nome ao job que está rodando alí para facilitar a identificação futuramente. Para criar terminais identificados, basta utilizar o parâmetro -S.
 # screen -S nanoshots  
 root@fidelis:/home/matheus# screen -ls  
 There are screens on:  
      25346.nanoshots     (16-05-2016 13:56:37)     (Detached)  
      23661.pts-2.fidelis     (16-05-2016 13:19:03)     (Detached)  
 2 Sockets in /var/run/screen/S-root.  
 root@fidelis:/home/matheus#   



Espero ter ajudado :)

Fonte: Tecmint


SOBRE O AUTOR

Matheus Fidelis

http://msfidelis.github.io/

Power Ranger, Piloto de Helicópteros e Astronauta da NASA. Desenvolvedor Web PHP com foco em Backend e POO, Linux SysAdmin DevOps e Entusiasta Python. Criou esse site pra contribuir com a comunidade com coisas que aprende dentro de um setor maluco de TI :)

Postar um comentário

 
Nanoshots | Open Source Security, Linux e Tutoriais © 2015 - Designed by Templateism.com