Como atribuir um nome a uma tela? [fechadas]

471

Estou usando a screenferramenta multiplexadora no shell de comando e abro muitas telas. Em seguida, esqueço qual ID do processo se associa a qual tarefa.

Gostaria de definir um nome para uma tela, mas não consigo encontrar uma opção na página de manual.

Atualmente, listar as telas tem esta aparência:

There are screens on:
    5422.pts-1.aws1 (Detached)
    5448.pts-1.aws1 (Detached)
    5027.pts-1.aws1 (Detached)
3 Sockets in /var/run/screen/S-sb.

E eu gostaria de ver algo assim:

There are screens on:
    5422.logCleanWorker (Detached)
    5448.overNightLongTask(Detached)
    5027.databaseOverNightLongTask (Detached)
3 Sockets in /var/run/screen/S-sb.

Como posso fazer isso?

spankmaster79
fonte
4
a pergunta parece mais com a pergunta "como renomear sessões existentes" em vez de "como iniciar novas sessões com um nome". Nesse contexto, a resposta atualmente escolhida não é realmente apropriada. A resposta correta deve, antes, ser o único dado por user164176- stackoverflow.com/a/3309696/636762
Rakib
Os nomes das sessões de tela sugerem que você crie uma nova sessão de tela para uma única tarefa (talvez um único comando). A tela suporta várias janelas , para que você possa executar todas essas tarefas em uma única sessão de tela.
Melebius
3
Isso pode ser migrado para o SuperUser (ou algum outro site do StackExchange)? Obviamente, é bastante útil para muitas pessoas, embora esteja fora do escopo deste site em particular.
22718 Patrick Sanan
1
se você encontrar uma opção neste site para movê-lo lá com toda a história, então eu concordaria movê-lo
spankmaster79

Respostas:

652

Para iniciar uma nova sessão

screen -S your_session_name

Para renomear uma sessão existente

Ctrl+ a, nome da :sessão YOUR_SESSION_NAMEEnter

Você deve estar dentro da sessão

user164176
fonte
14
Esta é a solução apropriada, pois se concentra em renomear a sessão existente em vez de criar uma nova.
thanos.a
4
Uma observação rápida sobre a C-a :sintaxe .... "Todos os comandos da tela são prefixados por uma tecla de escape, por padrão C-a(que é Control-a, às vezes escrita ^a). Para enviar um literal C-apara os programas na tela, use C-a a. Isso é útil ao trabalhar com tela dentro da tela. Por exemplo C-a a n, moverá a tela para uma nova janela na tela dentro da tela. " (ref: aperiodic.net/screen/quick_reference )
Nate Ritter
Muito apreciado. Mesmo sabendo que você pode começar com um nome, geralmente começo sem nomear, então gostaria de poder mais tarde. Obrigado!
Ketzak
2
concordou depois de olhar para um par de anos mais tarde: D
spankmaster79
Posso ligar a C-a :sessionname NEWNAMEalgo mais rápido para digitar? Tentei, bind $ sessionnamemas agora, quando C-a $não me solicita um novo nome. Isso é de alguma forma possível?
mail
592

Para criar uma nova tela com o nome foo, use

screen -S foo

Em seguida, para recolocá-lo, execute

screen -r foo  # or use -x, as in
screen -x foo  # for "Multi display mode" (see the man page)
miedwar
fonte
16
Na sua solução, você explica como criar novos com nomes corretos, em vez de alterar os existentes. Não há ninguém que queira encerrar a sessão, se for possível mantê-la.
thanos.a
10
Role para baixo até a resposta do usuário164176 para ver como renomear sessões existentes.
Jlh
1
a pergunta parece mais com a pergunta "como renomear sessões existentes" em vez de "como iniciar novas sessões com um nome". Nesse contexto, a resposta atualmente escolhida não é realmente apropriada. A resposta correta escolhido deve, antes, ser o único dado por user164176- stackoverflow.com/a/3309696/636762 abaixo
Rakib
Eu procurei "ubuntu create a new screen with name" no google e este foi o primeiro resultado. Exatamente o que eu estava procurando :) Obrigado
Skylord123
Para renomear uma sessão: Ctrl + a,: sessionname YOUR_SESSION_NAME Digite.
Slake
51

Como já foi dito, screen -S SESSIONTITLEfunciona para iniciar uma sessão com um título ( SESSIONTITLE), mas se você iniciar uma sessão e depois decidir alterar seu título. Isso pode ser feito usando as ligações de teclas padrão:

Ctrl+ a,A

O que solicita:

Set windows title to:SESSIONTITLE

Altere SESSIONTITLEao retroceder e digitando o título desejado. Para confirmar a alteração do nome e listar todos os títulos.

Ctrl+ a,"

E4Y
fonte
40
Você está tratando os termos sessão e janela como intercambiáveis ​​quando não são. Ctrl+a, Anão define o nome da sessão ( SESSIONNAME), apenas define o título da janela atual . Os títulos das janelas em uma sessão não aparecem na lista de sessões quando consultados screen -list. A pergunta pergunta como definir o nome da sessão .
StvnW 14/05
5
útil, mas altera o título da janela atual, não o nome da sessão.
Znik 9/01/15
13

A maneira mais fácil de usar a tela com o nome

screen -S 'name' 'application'
  • Ctrl+ a, d= sai e deixa o aplicativo aberto

Retornar à tela:

screen -r 'name'

por exemplo, usando lynx com tela

Criar tela:

screen -S lynx lynx

Ctrl+ a, d= saída

mais tarde você pode retornar com:

screen -r lynx
OneOFPunx
fonte
18
Três problemas com isso. Primeiro, várias pessoas já postaram isso. Segundo, você está dizendo a ele coisas básicas sobre o uso da tela que ele já conhece. Terceiro, você não respondeu à pergunta, pois ele perguntou como nomear uma sessão de tela já existente.
Steely Dan
0

Sou iniciante na tela, mas acho imensamente útil ao restaurar conexões perdidas. Sua pergunta já foi respondida, mas essas informações podem servir como um complemento - eu uso o putty com o gerenciador de conexões do putty e nomeio minhas telas - "tab1", "tab2" etc.). guias é mais importante que o nome de cada guia individual. Eu uso a 8ª guia para conectar-se ao db, a 7ª para visualizar logs etc. Então, quando eu quero anexar novamente minhas telas, escrevi um invólucro simples que diz:

#!/bin/bash
screen -d -r tab$1

onde o primeiro argumento é o número da guia.

Saurabh Hirani
fonte
1
Isso pode ser melhor feito como uma função bash.
Paul Price