Definir um nome para uma sessão de tela

22

Existe uma maneira de dar um nome específico a uma sessão de tela unix? Por exemplo, digamos que estou executando o mesmo programa várias vezes, cada um com parâmetros diferentes e quero saber qual é qual deles.

    
por Charlotte 27.04.2011 / 22:59

5 respostas

27

Você pode nomear uma sessão ao iniciá-la com a opção -S name . De dentro de uma tela em execução, você pode alterá-lo digitando CTRL-a, :sessionname name . Você pode visualizar as sessões da tela de execução com screen -ls e se conectar a uma pelo nome com screen -xS name .

Dentro de uma sessão de tela única, você também pode nomear cada janela. Faça isso digitando CTRL-a, A , em seguida, o nome que você deseja. Você pode visualizar uma lista interativa de janelas nomeadas digitando CTRL-a, " e selecionar aquela a partir da qual você deseja alternar.

Nomear os dois ecrãs e terminais nos ecrãs é realmente útil para lembrar o que são e porque os iniciou em primeiro lugar.

    
por 21.12.2011 / 06:39
20

Existem dois conceitos aqui e não sei qual deles você tem em mente:

  • Você pode ter várias janelas de tela. Cada janela executa um shell ou outro programa. Todas as janelas são hospedadas pelo mesmo processo. C-a c cria uma janela, C-a n e C-a p mudam para a janela seguinte / anterior e assim por diante.
  • Você pode ter várias sessões de tela. Cada sessão é hospedada por seu próprio processo e é independente de todas as outras sessões. A tela inicial sem nenhuma opção de reconexão ( -r ou -R ) cria uma nova sessão.

O Windows possui títulos, que podem ser definidos por meio da opção de linha de comando -t , da ligação de chave C-a A , do comando title ou da sequência de escape \ek . Consulte resposta do shellter para obter mais detalhes.

As sessões podem ter nomes. Você normalmente definiria o nome na linha de comando com a opção -S ; se você não especificar um nome, a tela cria um. Se você usar várias sessões de tela, normalmente você terá nomes de sessão diferentes. Você pode listar a sessão da tela de execução com screen -ls ; a primeira palavra em cada linha de sessão é 12345.sessionname , em que 12345 é o ID do processo de tela. Use screen -r sessionname ou screen -r 12345 para retomar uma sessão indicada pelo nome ou ID do processo.

    
por 28.04.2011 / 22:17
9

Ah ... tela, isso me leva de volta; -)

Por uma janela

-t name
    sets the title (a.k.a.) for the default shell or specified program. 
    See also the "shelltitle" .screenrc command.

Para sessões múltiplas iniciadas no seu .screenrc

screen -t top 2 nice top
screen -t ....

Aqui está um link para uma cópia on-line do página de manual para tela.

Editar: adicionado

Para alterar o nome da tela atual, crie uma ferramenta de script de shell como

cat scrnTitle.sh
#/bin/bash
echo -ne '\ek${0}\e\'

Não testado, não tenho tela disponível no sistema em que estou trabalhando.

Espero que isso ajude.

    
por 27.04.2011 / 23:11
4

Ao executar screen :

Ctrl+a (ou qualquer que seja a sua sequência de escape screen ) A

    
por 28.04.2011 / 01:20
3

As respostas acima já dizem como nomear uma tela quando você a inicia. Eles também apontam que uma tela não pode ser renomeada depois de iniciada. O título da janela pode ser definido, mas o nome usado para anexar a tela permanece como pid.pty.host.

No entanto, para conseguir um efeito útil, descobri que usar o alias funciona muito bem. Se eu esquecer de nomear uma tela ou me encontrar em uma sessão com um monte de telas que se tornam naturalmente telas para tarefas específicas, eu simplesmente defino um alias para o comando anexar a elas.

exemplo:

alias goncompile='screen -r 2354'

Emitir o comando alias por si só, vai te lembrar quais telas você tem e o comando que você definiu para anexar a elas.

Use unalias para removê-los.

    
por 23.08.2014 / 18:19

Tags