2010-07-08 2 views
361

Uso lo strumento multiplexer screen nella shell dei comandi e apro molte schermate. Quindi dimentico quale ID di processo si associa a quale attività.Come assegnare un nome per uno schermo?

Vorrei impostare un nome per uno schermo ma non riesco a trovare un'opzione nella pagina di manuale.

Attualmente, l'elenco delle schermate si presenta così:

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 mi piacerebbe vedere qualcosa di simile:

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

Come posso fare questo?

+1

la questione sembra più è chiedere 'come rinominare sessioni esistenti' piuttosto che 'come avviare nuove sessioni con un nome'. In tale contesto, il la risposta attualmente scelta non è propriamente appropriata.La risposta corretta dovrebbe essere quella data da 'user164176' - http://stackoverflow.com/a/3309696/636762 –

+0

I nomi delle tue sessioni sullo schermo suggeriscono di creare una nuova sessione di schermate per una singola attività (forse un singolo comando). Lo schermo supporta [più finestre] (https://www.rackaid.com/blog/linux-screen-tutorial-and-how-to/#creating), quindi eseguire tutte queste attività in un'unica sessione di schermo. – Melebius

risposta

560

Per creare una nuova schermata con il nome foo, utilizzare

screen -S foo 

Poi rimontarlo, eseguire

screen -r foo # or use -x, as in 
screen -x foo # for "Multi display mode" (see the man page) 
+15

Nella soluzione si spiega come crearne di nuovi con nomi corretti piuttosto che modificare quelli esistenti. Non c'è nessuno che voglia terminare la sessione se è possibile mantenerla. –

+10

Scorri verso il basso fino alla risposta dell'utente164176 per vedere come rinominare le sessioni esistenti. – jlh

+0

la domanda sembra più come chiedere "come rinominare le sessioni esistenti" piuttosto che "come avviare nuove sessioni con un nome". In quel contesto, la risposta attualmente scelta non è propriamente appropriata. La risposta corretta scelta dovrebbe essere quella data da 'user164176' - http://stackoverflow.com/a/3309696/636762 sotto –

424

screen -S SESSIONNAME è buono per iniziare una sessione con un nome, ma se si inizia una sessione e in seguito decidere di nominarlo, immettere la modalità di comando (C-a :) e quindi immettere il comando sessionname SESSIONNAME.

+11

Questa è la soluzione appropriata in quanto si concentra sul rinominare la sessione esistente piuttosto che crearne una nuova. –

+2

Una nota rapida su 'Ca:' syntax .... "Tutti i comandi dello schermo sono preceduti da una chiave di escape, di default' Ca' (che è Control-a, a volte scritto '^ a'). Per inviare un' Ca 'letterale 'ai programmi sullo schermo, usare' Ca a'. Ciò è utile quando si lavora con lo schermo all'interno dello schermo.Per esempio 'Ca an' sposta lo schermo in una nuova finestra sullo schermo all'interno dello schermo." (ref: http://aperiodic.net/screen/quick_reference) –

+0

Molto apprezzato. Anche se so che puoi iniziare con un nome, spesso inizio senza nominare, quindi vorrei poterlo più tardi. Grazie! – Ketzak

1

Sono un principiante sullo schermo ma lo trovo immensamente utile durante il ripristino delle connessioni perse. Alla tua domanda è già stata data una risposta, ma questa informazione potrebbe servire come add-on: io uso stucco con la gestione delle stucchi e nominare i miei schermi - "tab1", "tab2", ecc. - Per quanto mi riguarda, l'immagine generale dell'8-10 le schede è più importante di ogni singolo nome di tabulazione. Io uso la scheda 8 per la connessione al db, il 7 ° per i registri di visualizzazione, ecc Quindi quando ho voglia di riattaccare i miei schermi ho scritto un semplice involucro che dice:

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

cui primo argomento è il numero di scheda.

+0

Questo potrebbe essere fatto meglio come una funzione bash. –

8

La schermata di utilizzo modo più semplice con il nome

screen -S 'name' 'application' 
  • Ctrl + un, d = uscita e lasciare l'applicazione aperta

Tornare alla schermata:

screen -r 'name' 

per esempio usando lynx con schermo

Creare schermo:

screen -S lynx lynx 

Ctrl + un, d = uscita

poi si può tornare con:

screen -r lynx 
+15

Tre problemi con questo. Innanzitutto, diverse persone hanno già pubblicato questo. In secondo luogo, gli stai raccontando materiale di utilizzo dello schermo di base che già conosce. In terzo luogo, non hai effettivamente risposto alla domanda, dal momento che ha chiesto come nominare una sessione di schermate già esistente. –

43

Come già detto, screen -S SESSIONTITLE funziona per l'avvio di una sessione con un titolo (SESSIONTITLE), ma se si avvia una sessione e successivamente si decide di cambiarne il titolo. Ciò può essere realizzato utilizzando le combinazioni di tasti predefinite:

Ctrl + un, Un

che spinge:

Set windows title to:SESSIONTITLE 

Change SESSIONTITLE dal ritorno indietro e digitare il titolo desiderato . Per confermare il cambio di nome ed elencare tutti i titoli.

Ctrl + un, "

+31

Stai trattando i termini _sessione_e _finestra_ come intercambiabili quando non lo sono. 'Ctrl + a',' A' non imposta il nome _session_ ('SESSIONNAME'), imposta solo il titolo _window_ corrente. I titoli di windows all'interno di una sessione non compaiono nell'elenco delle sessioni quando vengono interrogate con 'screen -list'. La domanda chiede come impostare il nome _session_. – StvnW

+2

utile ma cambia il titolo della finestra corrente, non il nome della sessione. – Znik