Como terminar uma sessão do Screen no Linux

LinuxBeginner
Pratique Agora

Introdução

Este tutorial fornecerá uma visão geral dos fundamentos do Linux Screen, um poderoso multiplexador de terminal que permite criar, gerenciar e navegar por múltiplas sessões de terminal dentro de uma única janela. Você aprenderá como iniciar, desanexar e reanexar sessões do Screen, bem como explorar aplicações práticas desta ferramenta versátil.

Compreendendo os Fundamentos do Linux Screen

O Linux Screen é um poderoso multiplexador de terminal que permite criar, gerenciar e navegar por múltiplas sessões de terminal dentro de uma única janela. Ele oferece uma maneira de executar múltiplos comandos ou aplicações simultaneamente, mantê-los em execução em segundo plano e alternar entre eles de forma contínua.

Um dos principais casos de uso do Linux Screen é habilitar sessões persistentes. Isso significa que você pode iniciar um processo de longa duração, desanexar da sessão e, posteriormente, reanexá-lo, mesmo de um local ou dispositivo diferente. Isso é particularmente útil para tarefas como gerenciamento de servidor remoto, execução de scripts automatizados ou manutenção de processos de longa duração que não devem ser interrompidos.

Outra característica chave do Linux Screen é sua capacidade de suportar sessões compartilhadas. Isso permite que múltiplos usuários se conectem à mesma sessão do Screen, possibilitando a colaboração e a assistência remota. Isso pode ser especialmente útil em cenários onde vários membros da equipe precisam trabalhar no mesmo projeto ou solucionar um problema juntos.

Para demonstrar o uso básico do Linux Screen, vamos iniciar uma nova sessão do Screen. Abra seu terminal e digite o seguinte comando:

screen

Você estará agora dentro de uma nova sessão do Screen. Você pode saber que está em uma sessão do Screen porque o terminal pode parecer ligeiramente diferente, ou você pode ver uma mensagem de boas-vindas.

Agora, vamos executar um comando simples dentro desta sessão do Screen. Usaremos o comando top para ver os processos em execução.

top

Você deve ver a saída do top exibindo os processos do sistema.

top - HH:MM:SS up  X days, HH:MM,  X users,  load average: X.XX, X.XX, X.XX
Tasks: XXX total,   X running, XXX sleeping,   X stopped,   X zombie
%Cpu(s):  X.X us,  X.X sy,  X.X ni, XX.X id,  X.X wa,  X.X hi,  X.X si,  X.X st
MiB Mem :  XXXX.X total,  XXXX.X free,   XXX.X used,  XXXX.X buff/cache
MiB Swap:     0.0 total,     0.0 free,     0.0 used.  XXXX.X avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
   XXXX labex     20   0  XXXXXX  XXXXX  XXXXX S   X.X   X.X   X:XX.XX top
   XXXX labex     20   0  XXXXXX  XXXXX  XXXXX S   X.X   X.X   X:XX.XX zsh
   ...

Para sair do comando top, pressione q.

Agora, vamos desanexar desta sessão do Screen. Isso deixará a sessão em execução em segundo plano. Para desanexar, pressione Ctrl+A seguido por d.

Ctrl+A, d

Você deve ver uma mensagem indicando que você se desanexou da sessão do Screen.

[detached from ...]
Ilustração de desanexar da sessão do Screen

Você está agora de volta à sua sessão de terminal original. A sessão do Screen com o comando top (do qual você saiu) ainda está em execução em segundo plano.

Listando e Reanexando a Sessões do Screen

Agora que você se desanexou de uma sessão do Screen, vamos aprender como listar as sessões em execução e reanexar a uma delas.

Para listar todas as sessões do Screen em execução, use o comando screen -ls no seu terminal.

screen -ls

Você deve ver uma saída semelhante a esta, mostrando sua sessão desanexada:

There is a screen on:
        XXXXX.pts-X.labex       (Detached)
X Sockets in /run/screen/S-labex.

A saída mostra o ID da sessão (por exemplo, XXXXX.pts-X.labex) e seu status (Desanexado).

Para reanexar à sessão do Screen desanexada mais recentemente, use o comando screen -r.

screen -r

Você deve estar agora de volta dentro da sua sessão do Screen. Como você saiu do top no passo anterior, provavelmente verá um prompt de terminal padrão dentro da sessão do Screen.

Ilustração de reanexar à sessão do Screen

Se você tiver múltiplas sessões do Screen em execução, você pode reanexar a uma sessão específica fornecendo seu ID de sessão após o comando screen -r. Por exemplo, se o ID da sessão for 12345, você usaria:

screen -r 12345

Para este laboratório, como você provavelmente só tem uma sessão, screen -r é suficiente.

Agora que você está de volta na sessão do Screen, vamos sair dela corretamente. Você pode fazer isso digitando exit dentro da sessão do Screen.

exit

Isso encerrará a sessão do Screen e retornará você ao seu terminal original.

Você pode verificar se a sessão está fechada listando as sessões do Screen novamente:

screen -ls

Você deve ver uma saída indicando que não há sessões do Screen em execução:

No Sockets in /run/screen/S-labex.
Saída mostrando que não há sessões em execução

Terminando uma Sessão do Screen

No passo anterior, você aprendeu como sair de uma sessão do Screen de dentro da sessão usando o comando exit. No entanto, pode haver momentos em que você precisa terminar uma sessão do Screen de fora da sessão, por exemplo, se uma sessão não estiver respondendo ou se você simplesmente quiser fechá-la sem reanexar.

Para terminar uma sessão específica do Screen do seu terminal original, você pode usar o comando screen -X -S [session_id] quit. Você precisará do ID da sessão, que pode obter de screen -ls.

Primeiro, vamos iniciar uma nova sessão do Screen para que tenhamos uma para terminar.

screen

Agora, desanexe desta sessão usando Ctrl+A, d.

Ctrl+A, d

Liste as sessões em execução para obter o ID da sessão.

screen -ls

Anote o ID da sessão da saída (por exemplo, XXXXX.pts-X.labex).

Agora, use o comando screen -X -S [session_id] quit para terminar a sessão. Substitua [session_id] pelo ID real que você anotou.

screen -X -S XXXXX.pts-X.labex quit

Você não deve ver nenhuma saída se o comando for bem-sucedido.

Para confirmar que a sessão foi terminada, liste as sessões do Screen novamente.

screen -ls

Você deve ver uma saída indicando que não há sessões do Screen em execução.

No Sockets in /run/screen/S-labex.

Este método é útil para terminar à força uma sessão do Screen quando você não pode acessá-la diretamente.

Ilustração para terminar a sessão do Screen

Resumo

O Linux Screen é uma ferramenta valiosa para gerenciar e manter sessões de terminal persistentes. Ao entender como criar, desanexar, listar, reanexar e terminar sessões do Screen, você pode executar processos de longa duração, colaborar com membros da equipe e garantir que suas tarefas críticas continuem sendo executadas mesmo quando você não estiver diretamente conectado ao terminal. Este tutorial abordou os conceitos essenciais e exemplos práticos do uso do Linux Screen, equipando você com o conhecimento para aprimorar sua produtividade e otimizar seus fluxos de trabalho baseados em terminal.