Como usar o comando screen do Linux
Publicados: 2022-01-29 Com o comando de screen
do Linux, você pode enviar aplicativos de terminal em execução para segundo plano e puxá-los para frente quando quiser vê-los. Ele também suporta telas divididas e funciona em conexões SSH, mesmo depois de desconectar e reconectar!
RELACIONADO: 10 comandos básicos do Linux para iniciantes
O que é o comando de tela?
O comando screen
é um multiplexador de terminal e está repleto de opções. Dizer que pode fazer muito é o avô dos eufemismos. A página man é executada em mais de 4.100 linhas.
A seguir estão os casos mais comuns em que você usaria o comando screen
, e vamos abordá-los mais detalhadamente neste artigo:
- A operação padrão é criar uma nova janela com um shell, executar um comando e, em seguida, colocar a janela em segundo plano (chamado “detaching”). Quando você quiser ver como está o seu processo, você pode puxar a janela para o primeiro plano novamente (“reanexar”) e usá-la novamente. Isso é ótimo para processos longos que você não deseja encerrar acidentalmente fechando a janela do terminal.
- Depois de ter uma sessão de
screen
em execução, você pode criar novas janelas e executar outros processos nelas. Você pode facilmente alternar entre as janelas para monitorar seu progresso. Você também pode dividir sua janela de terminal em regiões verticais ou horizontais e exibir suas várias janelas descreen
em uma janela. - Você pode se conectar a uma máquina remota, iniciar uma sessão de
screen
e iniciar um processo. Você pode se desconectar do host remoto, reconectar e seu processo ainda estará em execução. - Você pode compartilhar uma sessão de
screen
entre duas conexões SSH diferentes para que duas pessoas possam ver a mesma coisa, em tempo real.
Tela de instalação
Para instalar a screen
no Ubuntu, use este comando:
sudo apt-get tela de instalação
Para instalar a screen
no Manjaro, use o seguinte comando:
sudo pacman -Sy screen
No Fedora, você digita o seguinte:
tela de instalação do sudo dnf
Introdução à tela
Para iniciar a screen
, basta digitá-la conforme mostrado abaixo e pressionar Enter:
tela
Você verá uma página de informações de licença. Você pode pressionar a barra de espaço para ler a segunda página ou Enter para retornar ao prompt de comando.
Você fica no prompt de comando e nada parece ter acontecido. No entanto, agora você está executando um shell dentro de um emulador de terminal multiplexado. Por que isso é uma coisa boa? Bem, vamos iniciar um processo que levará muito tempo para ser concluído. Faremos o download do código-fonte do kernel Linux mais recente e o redirecionaremos para um arquivo chamado latest_kernel.zip
.
Para isso, digitamos o seguinte:
curl https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.9.tar.xz > last_kernel.zip
Nosso download começa e a saída do curl
nos mostra o progresso.
Não podemos mostrar uma imagem do próximo bit, porque é uma sequência de teclas. Digite Ctrl+A, solte essas teclas e pressione d para separar a tela.
O processo de download ainda está em execução, mas a janela que mostra o download foi removida. Você retornará à janela do terminal a partir da qual iniciou a sessão de screen
. Uma mensagem informa que uma janela de screen
rotulada 23167.pts-0.howtogeek
foi desanexada.
Você precisa do número do início do nome da janela para reanexá-lo. Se você esquecer, você sempre pode usar a opção -ls
(list), como mostrado abaixo, para obter uma lista das janelas desanexadas:
tela -ls
Quando estiver pronto, você pode usar a opção -r
(reanexar) e o número da sessão para reanexá-lo, assim:
tela -r 23167
A janela que estava trabalhando em segundo plano agora é trazida de volta à janela do terminal como se nunca tivesse saído.
Se for um processo que vai ser executado até a sua conclusão, ele acabará por ser concluído. Se for um processo contínuo, você eventualmente desejará encerrá-lo. De qualquer forma, quando o processo terminar, você poderá digitar exit
para sair da screen
. Alternativamente, você pode pressionar Ctrl+A e, em seguida, K para matar uma janela à força.
Digite o seguinte comando:
saída
Você retornará à janela de terminal anterior, que ainda mostrará o comando que você usou para reconectar a janela. Como fechamos nossa única janela separada, recebemos uma mensagem de que a screen
está terminando.
RELACIONADO: Como usar o curl para baixar arquivos da linha de comando do Linux
Usando sessões de tela nomeada
Você pode usar a opção -S
(nome da sessão) para nomear sua sessão de screen
. Se você usar um nome memorável em vez da identidade numérica da sessão, é mais conveniente reconectar a uma sessão. Digitamos o seguinte para nomear nossa sessão como “bigfile”:
tela -S bigfile
Quando a screen
inicia nossa sessão, vemos uma janela em branco com um prompt de comando. Vamos baixar um arquivo grande, para que possamos usar um processo de longa execução como exemplo.
Digitamos o seguinte:
curl http://ipv4.download.thinkbroadband.com/1GB.zip > bigfile.zip
Quando o download é iniciado, pressionamos Ctrl+A e, em seguida, pressionamos D para desanexar a sessão. Digitamos o seguinte para usar a opção -ls
(list) com screen
para ver os detalhes de nossa sessão desanexada:
tela -ls
Atrás do identificador numérico (23266), vemos o nome da nossa sessão (bigfile). Digitamos o seguinte, incluindo o nome da sessão, para reanexá-la:
tela -r arquivo grande
Estamos reconectados à nossa janela de download e vemos que o download longo ainda está em andamento.
Quando o download estiver concluído, digitamos exit
para fechar a janela da sessão.
Usando a tela com várias janelas
Até agora, usamos a screen
para colocar um único processo em segundo plano em uma janela separada. No entanto, screen
é capaz de fazer muito mais do que isso. Em seguida, executaremos alguns processos que nos permitem monitorar alguns aspectos do nosso computador.
Digitamos o seguinte para iniciar uma sessão de tela chamada “monitor”:
tela -S monitor
No prompt de comando em nossa nova sessão de janela, iniciaremos o dmesg
e usaremos as opções -H
(legível por humanos) e -w
(aguardar novas mensagens). Isso exibirá as mensagens do buffer do kernel; novas mensagens aparecerão à medida que ocorrerem.
Digitamos o seguinte:
dmesg -H -w
As mensagens existentes aparecem. Não voltamos ao prompt de comando porque o dmseg
está aguardando novas mensagens e as exibirá à medida que elas chegarem.
RELACIONADO: Como usar o comando dmesg no Linux
Queremos executar outro aplicativo, então precisamos de uma nova janela de screen
. Pressionamos Ctrl+A e depois C para criar uma nova janela. Vamos usar watch
para executar vmstat
repetidamente, para obter uma exibição atualizada com frequência do uso de memória virtual em nosso computador.
No novo prompt de comando, digitamos o seguinte:
assistir vmstat
A saída vmstat
aparece e é atualizada a cada dois segundos.
Nossos dois processos estão agora em execução. Para alternar entre as janelas da screen
, pressione Ctrl+A e o número da janela. A primeira que criamos é a janela zero (0), a próxima é a janela 1 e assim por diante. Para pular para a primeira janela (a do dmesg
), pressionamos Ctrl+A e 0.
Se pressionarmos Ctrl+A e 1, isso nos leva de volta à janela vmstat
.
Isso é muito bacana! Podemos pressionar Ctrl+A e depois D para sair desta sessão; podemos reconectar mais tarde. Ambas as sessões ainda estarão em execução. Novamente, para alternar entre as janelas, pressionamos Ctrl+A e o número (0 ou 1) da janela para a qual queremos alternar.
Vamos para a próxima etapa e visualizar as duas telas em uma janela. Ao fazer isso, você estenderá a janela do terminal para um tamanho que torne essa etapa útil. Nossos exemplos são restritos ao tamanho de nossas capturas de tela, então nossas janelas parecerão um pouco apertadas.
Para fazer isso, pressionamos Ctrl + A e, em seguida, Shift + S (é necessário um “S” maiúsculo).
A janela se divide em duas “regiões”.
A região superior ainda exibe vmstat
e a região inferior está em branco. O cursor é destacado na captura de tela abaixo. Para movê-lo para a região inferior, pressionamos Ctrl+A e depois Tab.
O cursor se move para a região inferior, que na verdade é apenas um espaço vazio. Não é um shell, então não podemos digitar nada nele. Para obter uma exibição útil, pressionamos Ctrl+A e, em seguida, pressionamos “0” para exibir a janela dmesg
nesta região.
Isso nos dá as duas saídas ao vivo em uma janela dividida. Se pressionarmos Ctrl+A e D para desanexar a janela e, em seguida, reanexá-la, perderemos a visualização do painel dividido. No entanto, podemos restaurá-lo com os seguintes atalhos de teclado:
- Ctrl+A, S: divide a janela horizontalmente.
- Ctrl+A , Tab: Move para a região inferior.
- Ctrl+A, 0: Exibe a janela zero na região inferior.
Podemos levar as coisas ainda mais longe. Agora dividiremos o painel inferior verticalmente e adicionaremos um terceiro processo à exibição. Com o cursor na região inferior, pressionamos Ctrl+A e C para criar uma nova janela com um shell nela. A região inferior exibe a nova janela e nos fornece um prompt de comando.
Em seguida, executamos o comando df
para verificar o uso do sistema de arquivos:
df
Quando vemos df
em execução, pressionamos Ctrl+A e o caractere pipe (|)
. Isso divide a região inferior verticalmente. Pressionamos Ctrl+A e Tab para mover para a nova região. Em seguida, pressionamos Ctrl+A e 0 para exibir a janela dmesg
.
Você também pode mover de região para região e adicionar mais divisões verticais ou horizontais. Aqui estão algumas combinações de teclas mais úteis:
- Ctrl+A: Salta para frente e para trás entre as regiões atual e anterior.
- Ctrl+A, Q: Fecha todas as regiões exceto a atual.
- Ctrl+A, X: Fecha a região atual.
Usando a tela sobre SSH
Com screen
, você pode iniciar uma sessão de janela, desanexá-la para que ela continue sendo executada em segundo plano, fazer logoff ou login novamente e reanexar a sessão.
Vamos fazer uma conexão SSH com nosso computador a partir de um computador diferente com o comando ssh
. Temos que fornecer o nome da conta com a qual vamos nos conectar e o endereço do computador remoto.
Para o nosso exemplo, digitamos o seguinte:
ssh [email protected]
Após autenticarmos no computador remoto e efetuarmos login, digitamos o seguinte para iniciar uma sessão de screen
chamada “ssh-geek”:
tela -S ssh-geek
Para fins de demonstração, executaremos o top
na janela da screen
, mas você poderá iniciar qualquer processo de longa duração ou interminável.
Digitamos o seguinte:
principal
Uma vez que o top
está rodando na janela, apertamos Ctrl+A, e então D para desanexar a janela.
Voltamos à janela do terminal remoto original.
Se digitarmos exit
, conforme mostrado abaixo, ele desconecta a sessão SSH e voltamos ao nosso computador local:
saída
Digitamos o seguinte para reconectar:
ssh [email protected]
Depois de nos reconectarmos e fazermos login, podemos digitar o seguinte para reconectar a sessão de screen
:
screen -r ssh-geek
Agora estamos reconectados à nossa instância ainda em execução de top
.
Isso é ótimo se você quiser iniciar um processo em uma máquina e continuar de onde parou em outra.
RELACIONADO: Como criar e instalar chaves SSH do shell do Linux
Compartilhando uma sessão de tela
Você também pode usar uma sessão de screen
para permitir que duas pessoas vejam e interajam com a mesma janela. Digamos que alguém executando o Fedora em seu computador queira se conectar ao nosso servidor Ubuntu.
Ele digitaria o seguinte:
ssh [email protected]
Depois de conectado, ele inicia uma sessão de tela chamada “ssh-geek” usando a opção -S (nome da sessão). Ele também usa as opções -d
(desanexar) e -m
(criação forçada) para criar uma nova sessão de screen
que já está desanexada.
Ele digita o seguinte:
screen -d -m -S ssh-geek
Ele digita o seguinte, usando a opção -x
(modo multitela) para anexar a sessão:
screen -x ssh-geek
Em um computador Manjaro, outra pessoa se conecta ao computador Ubuntu com as mesmas credenciais de conta, conforme mostrado abaixo:
ssh [email protected]
Uma vez conectada, ela digita o comando screen
e usa a opção -X (modo multitela) para entrar na mesma sessão da janela, assim:
tela -X ssh-geek
Agora, qualquer coisa que uma pessoa digitar, a outra verá. Por exemplo, quando uma pessoa emite o comando date, ambas o veem como é digitado, bem como sua saída.
Ambas as pessoas agora estão compartilhando uma sessão de screen
que está sendo executada em um computador Ubuntu remoto.
Para um software que viu a luz do dia pela primeira vez em 1987, screen
ainda oferece uma boa produtividade. Familiarizar-se com ele será um tempo bem gasto!
RELACIONADO: 37 comandos importantes do Linux que você deve conhecer
Comandos Linux | ||
arquivos | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · tipo · renomear · zip · descompactar · montar · umount · instalar · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · converter · rclone · triturar · srm | |
Processos | alias · tela · topo · legal · renice · progresso · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · tempo limite · parede · sim · matar · dormir · sudo · su · tempo · groupadd · usermod · grupos · lshw · desligar · reiniciar · parar · desligar · passwd · lscpu · crontab · data · bg · fg | |
Rede | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
RELACIONADO: Melhores laptops Linux para desenvolvedores e entusiastas