2009-05-22 6 views

risposta

7

Penso che questo funziona:

if [-n "$STY"]; then 
    screen -X title "foo" 
    screen -X monitor on 
fi 
+0

Perfetto! Grazie! – Dan

+2

Non credo che il "se [-n ..." è richiesto roba - lo schermo -X ... comando silenziosamente errori se non è possibile eseguire – dbr

+0

Con questa tecnica penso di dimenticare il monitoraggio, io basta cambiare il titolo in pippo (fatto) quando il programma finisce. Devo ancora capire quando è un buon momento per tornare a "bash" dal momento che non ho mai usato veramente titoli e non ho davvero voglia di cambiarli manualmente. – Dan

0

Lo schermo scorre in modo trasparente, quindi è difficile rilevare la sessione dello schermo. Se provi a mandare key press, funzionerebbe, e riempirebbe il tuo terminale con un po 'di spazzatura se non sei in una sessione.

+0

Beh, se ho bisogno di qualcosa che può mettere nel mio file screenrc come una dichiarazione di variabile per rendere più ovvia per il mio script bash (questo script è solo per me). sto ancora appeso dall'altra parte però. Ho questi programmi che prendono diverse ore per eseguire, e sarebbe bello se non appena un avviare il programma il titolo viene rinominato il processo attualmente in esecuzione (il mio script è eseguito con un singolo argomento) e il monitoraggio sarebbe accende, quindi potrei semplicemente sperare in un'altra scheda e ricevere notifiche quando il mio programma è terminato. – Dan

1

Stai cercando di visualizzare informazioni o interagire con la sessione dello schermo stessa? È possibile inviare messaggi avanti con questo: (http://www.slac.stanford.edu/comp/unix/package/epics/extensions/iocConsole/screen.1.html#lbAI)

il messaggio LINEA Indicazioni sullo schermo messaggi informativi e di altri diagnostiche in una riga di segnalazione. Mentre questa riga è distribuita per apparire a nella parte inferiore dello schermo, può essere definita per apparire nella parte superiore della schermata durante la compilazione. Se il terminale ha una linea stato definito nella sua termcap, schermo userà questo per la visualizzazione suoi messaggi, altrimenti una linea della schermata corrente sarà temporaneamente sovrascritti e uscita saranno momentaneamente interrotto. La riga di messaggio viene automaticamente rimossa dopo alcuni secondi di ritardo, ma è possibile rimuovere anche presto (sui terminali senza una riga di stato) iniziando dal tipo .

L'impianto riga di segnalazione può essere utilizzato da un'applicazione in esecuzione nella finestra corrente mediante la sequenza di controllo messaggio sulla ANSI . Per esempio, da dentro il guscio, provate qualcosa come:

echo '<esc>^Hello world from window '$WINDOW'<esc>\\' 

dove '' è una via di fuga, '^' è un letterale freccia in alto , e '\' si trasforma in una singola barra rovesciata.

2

schermo dichiara $STY variabile d'ambiente, si può provare a usarlo.

9

Dalla schermata manpage:

-X Send the specified command to a running screen session. You can 
     use the -d or -r option to tell screen to look only for attached 
     or detached screen sessions. Note that this command doesn't work 
     if the session is password protected. 

Fondamentalmente, eseguire

screen -X title mynewtitle 
screen -X monitor on 

Se il terminale non è in esecuzione all'interno dello schermo , errori silenziosi:

notinscreen:~$ screen -X title mynewtitle 
notinscreen:~$ 

È inoltre possibile inviare il comando a una sessione specifica, anche se staccato.Data una sessione di screen chiamato "principale":

$ screen -S main 
[detach from screen session] 
$ screen -ls 
There is a screen on: 
     2073.main  (Detached) 
1 Socket in /tmp/uscreens/S-dbr. 

..si può inviato il titolo dell'ultimo attivo finestra per blah:

$ screen -x main -X title blah 

..o una finestra specifica (chiamato in questo oldwindow esempio):

$ screen -x main -p oldwindow -X title blah 

invece di utilizzare -x main è possibile utilizzare l'ID del processo (da screen -ls), anche invece di utilizzare una finestra Nome (-p oldwindow) è possibile utilizzare un numero di finestra:

$ screen -x 2073 -p 0 -X title h 

Se c'è una sola sessione, non è necessario specificare il PID di sessione o nome.