it-swarm.it

Impostazione di un nome per una sessione schermo

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.

62
well actually

Puoi nominare una sessione quando la avvii con il -S name opzione. Dall'interno di una schermata corrente, puoi cambiarlo digitando CTRL-a, :sessionname name. Puoi visualizzare le sessioni dello schermo in esecuzione con screen -ls e connettiti 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, A quindi il nome desiderato. Puoi visualizzare un elenco interattivo di finestre con nome digitando CTRL-a, " e seleziona quello a cui desideri passare da quell'elenco.

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

73
Lars Yencken

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 c Crea una finestra, C-a n E C-a p Passano 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 (-r O -R) Crea una nuova sessione.

Windows ha titoli, che possono essere impostati tramite l'opzione della riga di comando -t, L'associazione di tasti C-a A, Il comando title o la sequenza di escape \ek. Vedi risposta del shellter per maggiori dettagli.

Le sessioni possono avere nomi. In genere imposta il nome sulla riga di comando con l'opzione -S; 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. Puoi elencare la sessione dello schermo in esecuzione con screen -ls; la prima parola su ogni riga di sessione è 12345.sessionname dove 12345 è l'ID del processo dello schermo. Utilizzare screen -r sessionname O screen -r 12345 Per riprendere una sessione indicata tramite il nome o l'ID processo.

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 del pagina di manuale per lo schermo.

Modifica: aggiunto

Per modificare il nome delle schermate correnti, creare uno strumento di script Shell simile

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

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

12
shellter

Durante l'esecuzione di screen:

Ctrl+a (o qualunque sia la tua sequenza di escape screen) A

4
ninjalj

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.

Usa unalias per rimuoverli.

3
caoimhin