O ecrã ou ecrã GNU é um multiplexador de terminal. Usando isto, pode executar qualquer número de aplicações baseadas em consolas, shells de comandos interactivos, aplicações baseadas em cursos, etc. Pode usar o ecrã para continuar a executar o programa depois de fechar acidentalmente o terminal, ou mesmo depois de sair e mais tarde retomar a sessão onde quer que esteja.
Um exemplo prático é onde está a executar uma tarefa numa máquina Linux remota na qual tem uma sessão ssh. Muitas vezes já viu esta sessão ssh ser terminada e já não pode trabalhar. Aqui vem o utilitário de ecrã para ajudar a retomar as sessões.
Como funciona o ecrã?
Quando o ecrã é chamado, cria uma janela única com uma shell (ou o comando especificado) e depois sai do seu caminho para que possa utilizar o programa como normalmente o faria. Depois, em qualquer altura, pode criar novas janelas (ecrã inteiro) com outros programas (incluindo mais shells), matar a janela actual, ver uma lista das janelas activas, copiar texto entre janelas, alternar entre janelas, etc.
Screen gere uma sessão constituída por uma ou mais janelas cada uma contendo uma shell ou outro programa. Além disso, o ecrã pode dividir uma exibição terminal em múltiplas regiões, cada uma exibindo o conteúdo de uma janela. Todas as janelas gerem os seus programas de forma completamente independente umas das outras. Os programas continuam a correr quando a sua janela não está actualmente visível e mesmo quando toda a sessão do ecrã é desligada do terminal do utilizador. Isto é prático para evitar uma sessão ssh involuntária.
Agora vamos verificar como usar este utilitário em Linux.
1) Invocar novas janelas
Se o comando de ecrã ainda não estiver presente no seu sistema, pode instalá-lo com o comando abaixo.
Em Debian
# apt-get install screen
Em Centos
# yum install screen
Pode iniciar o ecrã apenas digitando o ecrã no prompt de comando. Este comando de ecrã iniciará uma nova janela dentro do ecrã.
# screen
P>Pode iniciar uma nova janela dentro do ecrã e também dá um nome à janela, por exemplo aloft. Cria uma sessão com identificação por esse nome. O nome pode ser usado para voltar a ligar numa fase posterior.
# screen -S aloft
Nota que pode fazer todo o seu trabalho como se estivesse no ambiente CLI normal.
2) Listar todos os processos do ecrã
Como somos capazes de iniciar novas janelas dentro do ecrã, é possível exibir os ecrãs actualmente abertos, incluindo os que correm em segundo plano. Listará todas as sessões do ecrã existentes.
# screen -lsThere is a screen on: 10437.aloft (Attached)1 Socket in /var/run/screen/S-root.
3) Comando principal do ecrã
É possível operar com o ecrã utilizando alguns comandos. Iremos listar abaixo os comandos principais mais úteis.
-
Ctrl-a
seguido porc
: criar uma nova janela -
Ctrl-a
seguido porw
: exibir a lista de todas as janelas actualmente abertas -
Ctrl-a
seguido porA
: renomear as janelas actuais. O nome aparecerá quando listar a lista de janelas abertas comCtrl-a
seguido porw
. -
Ctrl-a
seguido porn
: vá para as próximas janelas -
Ctrl-a
seguido porp
: ir para as janelas anteriores -
Ctrl-a
seguido por Ctrl-a: de volta às últimas janelas utilizadas. -
Ctrl-a
seguido por um número de 0 a X: ir para as janelas n° X. -
Ctrl-a
seguido por"
: escolher as janelas para onde se deve avançar. -
Ctrl-a
seguido pork
: fechar as janelas actuais (kill) -
Ctrl-a
seguido porS
: dividir as janelas actuais horizontalmente. Para alternar entre as janelas, fazerCtrl-a
seguido porTab
. -
Ctrl-a
seguido por|
: dividir as janelas actuais verticalmente -
Ctrl-a
seguido pord
: destacar uma sessão do ecrã sem a parar -
Ctrl-a
seguido porr
: reatar uma sessão de ecrã separada -
Ctrl-a
seguido por: colar o texto copiado
4) Mostrar parâmetro do ecrã
Pode listar todos os parâmetros do ecrã para ajuda. Para o fazer, digite Ctrl-a
seguido do caracter ?
. Irá exibir uma lista de todos os comandos.
5) Separar sessão
A melhor vantagem do comando do ecrã é a possibilidade de separar uma sessão do ecrã. Pode iniciar uma sessão do ecrã num computador no escritório, separar a sessão do terminal local, ir para casa, iniciar sessão no nosso computador do escritório remotamente e recolocar a sessão do ecrã no terminal do nosso computador de casa. Durante o tempo de intervenção, todos os trabalhos no seu computador do escritório continuaram a ser executados. Esta função é utilizada para evitar a perda de dados que ocorrem repentinamente durante a ligação ssh desconectada.
Para compreender bem do que estamos a falar, tomemos um exemplo. Lançamos um processo de instalação.
Agora vamos destacar o ecrã com Ctrl-a
seguido por d
. Podemos verificar com o comando abaixo.
# screen -lsThere is a screen on: 12449.win (Detached)1 Socket in /var/run/screen/S-root.
É possível descolar o ecrã com screen -d
comando seguido pelo id do ecrã ou pelo seu nome. Isto significa que será necessário abrir outra janela ou consola para destacar a sessão se a consola actual tiver um processo em curso. É necessário primeiro listar o ecrã actual anexado.
# screen -lsThere is a screen on: 13686.win200 (Attached)1 Socket in /var/run/screen/S-root.
Agora num novo terminal, introduza o comando abaixo.
# screen -d 13686
ou pode usar o nome
# screen -d win200
Terá uma saída como abaixo que indica que o ecrã foi destacado.
6) Reinserir uma sessão
Depois de se destacar o ecrã, é possível reinseri-lo com o comando. Normalmente, a sua sessão do ecrã ainda está a funcionar, pelo que todos os seus processos não são interrompidos. Antes de voltar a colocar uma sessão, é necessário listar a sessão como acima, depois escolher a sessão para voltar a colocá-la.
# screen -r 13686
ou pode usar
# screen -r win200
Pode ver que depois de voltar a ligar a sessão, as janelas mostram o fim do processo que está concluído. Isto significa que pode trabalhar em ssh e destacar uma sessão que voltará a colocar em sua casa para continuar o seu processo de trabalho sem perder nada.
7) Criar uma nova shell interactiva
Se tiver alguns trabalhos para fazer e não quiser perder o seu trabalho, é possível criar uma nova shell interactiva. Pode facilmente ter algumas conchas interactivas (numeradas de 0 a X) abertas numa janela terminal. Quando inicia uma nova sessão, estará em shell 0.
Para o fazer, precisa de criar novas janelas dentro das janelas existentes com Ctrl-a
seguido de c
. Terá algo como abaixo.
Pode ver o ecrã 3 no topo da imagem do ecrã, o que indica que estamos no terceiro ecrã. Na parte inferior podemos também ver 3
8) Alternar entre janelas do ecrã
Quando tiver aberto mais de uma janela, para alternar entre cada janela, prima Control-a
seguido de space
ou o número da concha. Por exemplo, para mudar para o número da concha 1, prima Control-a
depois 1
. Por exemplo, mover-nos-emos no primeiro ecrã.
O topo e a parte inferior da imagem do ecrã mostra que estamos no primeiro ecrã.
9) Janelas divididas
Para ter uma visão global do seu trabalho, pode precisar de dividir as suas janelas em vez de ter várias janelas. Ctrl-a
seguido por S
ou |
divida o seu ecrã horizontal ou verticalmente. É possível repetir a operação sem limite. Para mover outra janela, usar Ctrl-a
seguido por Tab
.
Quando o cursor estiver sobre as janelas inferiores, pode criar uma nova janela (Ctrl-a
seguido por c
) ou chamar uma janela existente (Ctrl-a
seguido por um número).
Para fechar uma janela dividida, usar Ctrl-a
seguido de X
(Note-se que é o caracter maiúsculo).
10) Reconectar a uma sessão ssh desconectada
Quando iniciar sessão pela primeira vez,
- li>ecran de execução para iniciar uma sessão de ecrã. Se obtiver outra shell, execute os comandos nela.
# screen -S remote_session
- Quando tiver terminado, desmarque a sessão do ecrã e depois faça logout no ssh
- >li>Pode listar toda a sessão do ecrã primeiro
- >li>Reconectar-se à sua sessão do ecrã e continuar o seu work
# screen -d -r remote_ression
O comando de ecrã é mais utilizado para a sessão ssh porque ajuda a continuar o seu trabalho após uma desconexão sem perder os processos actuais em curso.
11) Rolar para cima nas janelas do ecrã
Desde que o ecrã assume a gestão dos seus programas remotos, não pode utilizar as funções de scroll do seu emulador de terminal enquanto corre o ecrã. Deve usar os comandos Screen para aceder ao buffer de scrollback.
- Use
Ctrl-a
seguido porescape
- Pressione o
Up
eDown
teclas de seta ou as teclasPgUp
ePgDn
teclas para percorrer a saída anterior.
p>P>É possível ver onde está o meu cursor na imagem do ecrã. Cada terminal virtual tem o seu próprio buffer de scrollback.
12) Ver o dono de cada sessão do ecrã
O screen -ls
ou screen -list
comandos só lhe mostram as suas próprias sessões do ecrã, mesmo para root. Tanto quanto sei, isso é o melhor para o próprio ecrã.
se quiser ver que sessões de ecrã foram iniciadas por que utilizadores procuram em cada directório de utilizadores em /var/run/screen/
.
13) Partilhar uma sessão de ecrã com uma conta
É possível ter duas pessoas ligadas à mesma conta a partir de locais remotos. Podem facilmente partilhar uma sessão de ecrã (por isso o que uma digita a outra vê e vice-versa). Para o fazer:
- Criar uma sessão de ecrã com nome:
# screen -d -m -S share_session
- Attach to the screen session in your terminal window
- Have a outra pessoa (ligado à mesma conta) também anexar à sessão do ecrã
terá exactamente a mesma saída exibida no outro local. Tudo o que aparecerá no seu terminal também aparecerá no terminal do outro utilizador.
14) Bloquear sessão do ecrã
É possível bloquear sessão do ecrã sem bloquear o utilizador normal da sessão. Isto significa que pode deixar o seu computador e ter a certeza de que ninguém virá a operações não autorizadas. Para o fazer, utilize o comando Ctrl-a
seguido por x
(Note que é o caracter minúsculo).
Screen used by root <root> on centos-01.Password:
15) Terminar sessão de ecrã
Quando tiver terminado e quiser sair da sessão de ecrã, pode usar o comando Ctrl-a
seguido por k
. Ser-lhe-á pedida uma confirmação.
Também pode usar o comando de saída. Se quiser guardar o seu processo em curso, pode simplesmente separar a sua sessão do ecrã antes de terminar a sessão.
Conclusion
O utilitário de ecrã pode monitorizar uma janela para actividade ou inactividade. Isto é óptimo se estiver a descarregar ficheiros grandes, a compilar, ou à espera de saída. Nesse momento, se necessário, pode mesmo iniciar algum processo a partir de um computador usando o comando de ecrã e desligá-lo quando estiver terminado.