Impostazione di un nome per una sessione schermo


46

C'è un modo per assegnare un nome particolare a una sessione schermo unix? Ad esempio, supponiamo che sto eseguendo lo stesso programma più volte, ognuna con parametri diversi e voglio dire quale è quale.


Non è una domanda di programmazione. Dovrebbe andare su SuperUser o Unix.
0xC0000022L

Risposte:


56

È possibile nominare una sessione all'avvio con l' -S nameopzione. Dall'interno di una schermata corrente, è possibile modificarlo digitando CTRL-a, :sessionname name. È possibile visualizzare le sessioni dello schermo in esecuzione con screen -lse connettersi a uno per nome con screen -xS name.

All'interno di una singola sessione dello schermo, puoi anche assegnare un nome a ciascuna finestra. Fallo digitando CTRL-a, Aquindi il nome desiderato. È possibile visualizzare un elenco interattivo di finestre con nome digitando CTRL-a, "e selezionare quello a cui si desidera passare da tale elenco.

La denominazione di schermate e terminali all'interno di schermate è davvero utile per ricordare cosa sono e perché li hai iniziati in primo luogo.


È possibile rinominare una sessione schermo dopo l'avvio (utilizzo :sessionname NEWNAME), ma è "generalmente scoraggiato". La $STYvariabile d'ambiente fa ancora riferimento al nome originale. Vedi il screenmanuale: gnu.org/software/screen/manual/html_node/Session-Name.html
Keith Thompson,

22

Ci sono due concetti qui, e non sono sicuro di quello che hai in mente:

  • Puoi avere più finestre sullo schermo. Ogni finestra esegue una shell o un altro programma. Tutte le finestre sono ospitate dallo stesso processo. C-a ccrea una finestra, C-a ne C-a ppassare alla finestra successiva / precedente, e così via.
  • Puoi avere più sessioni dello schermo. Ogni sessione è ospitata dal proprio processo ed è indipendente da tutte le altre sessioni. La schermata iniziale senza alcuna opzione di riattacco ( -ro -R) crea una nuova sessione.

Windows ha titoli, che possono essere impostati tramite l' -topzione della riga di comando, l' C-a Aassociazione dei tasti, il titlecomando o la \eksequenza di escape. Vedi la risposta di Shellter per maggiori dettagli.

Le sessioni possono avere nomi. In genere si imposta il nome sulla riga di comando con l' -Sopzione; se non si specifica un nome, lo schermo ne crea uno. Se utilizzi più sessioni dello schermo, in genere daresti loro nomi di sessione diversi. È possibile elencare la sessione dello schermo in esecuzione con screen -ls; la prima parola su ogni riga di sessione è 12345.sessionnamedove 12345 è l'ID del processo dello schermo. Utilizzare screen -r sessionnameo screen -r 12345per riprendere una sessione indicata tramite il nome o l'ID processo.


1
Nelle
combinazioni di

11

Ah ... Schermo, mi riporta indietro ;-)

Per una finestra

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

Per le sessioni multiple avviate dal tuo .screenrc

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

Ecco un link a una copia online della pagina man per lo schermo.

Modifica: aggiunto

Per modificare il nome delle schermate correnti, creare uno strumento di script shell come

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

Non testato, non ho uno schermo disponibile sul sistema su cui sto lavorando.


Grazie, questo aiuta molto. Esiste un modo per rinominare una sessione dello schermo già esistente?
Beh, in realtà il

@Charlotte: vedi le modifiche. Grazie per i voti!
shellter

Bella risposta @shellter! Sono curioso, hai detto "mi riporta indietro" nel senso che in questi giorni usi qualcos'altro (ad esempio tmux) o che ha più di 32 anni ?
tutuDajuju

1
@tutuDajuju: Gulp, ora che ci penso, ho usato screenalmeno 25 anni. Mi riporta indietro, perché ora è un caso d'uso speciale che mi porterebbe screen. Normalmente continuo ad aprire X-Terms, ma ricordo quando sembrava impossibile correre Xsu un PC 486 ;-) Saluti!
shellter

@shellter FYI, ho eseguito X su un PC 486 con 8 MB di RAM nel 1992 ...
Eno

4

Durante la corsa screen:

Ctrl+a(o qualunque sia la screensequenza di escape)A


3

Le risposte sopra ti dicono già come nominare una schermata quando la avvii. Sottolineano inoltre che uno schermo non può essere rinominato dopo che è stato avviato. È possibile impostare il titolo della finestra ma il nome utilizzato per allegare allo schermo rimane pid.pty.host.

Tuttavia, per ottenere un effetto utile ho scoperto che l'uso dell'alias funziona piuttosto bene. Se dimentico di nominare una schermata o mi ritrovo in una sessione con un gruppo di schermate che sono diventate naturalmente schermate per compiti particolari, ho semplicemente impostato un alias per il comando da associare a loro.

esempio:

alias goncompile='screen -r 2354'

Emettere il comando alias da solo ti ricorderà quali schermate hai e il comando che hai impostato per collegarle.

Utilizzare unaliasper rimuoverli.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.