Risposte:
Puoi guardare la $STY
variabile (una variabile impostata dal comando schermo ). Se non è "", allora ci si trova in una sessione schermo.
Sono sullo schermo
$ echo $STY
29624.pts-1.iain-10-04
$
Non sono sullo schermo
$ echo $STY
$
if test -n "$STY"; then printf "This is a screen session named '$STY'.\n"; else printf "This is NOT a screen session.\n"; fi
Puoi guardare la variabile $ TERM.
echo $TERM
Se è una screen
sessione, il termine variabile dovrebbe restituire "schermo".
root@deore:/volumes# echo $TERM
screen
Ctrl-a -d (per uscire dalla schermata)
root@deore:/volumes# echo $TERM
xterm
Controlla anche: https://stackoverflow.com/questions/3472287/how-do-you-tell-if-the-current-terminal-session-is-in-gnu-screen
"$TERM" = "screen"
sembra essere preservato quando si accede sudo
all'ambiente, a differenza $STY
dell'opzione.
A meno che non siano state modificate le combinazioni di tasti predefinite, è possibile eseguire Ctrl+ a-> Ctrl+ t, che mostrerà l'ora, se ci si trova nella schermata. Funzionerà anche se hai ssh: d altrove, diversamente dagli altri suggerimenti.
Il caption
comando in ~/.screenrc
è un buon modo per differenziare una sessione dello schermo.
Lo sto usando personalmente:
$ cat ~/.screenrc
caption always "%{= kc}Screen session on %H (system load: %l)%-28=%{= .m}%D %d.%m.%Y %0c"
Aggiunge una linea come questa nella parte inferiore dello schermo:
Screen session on gbook (system load: 1,75 1,74 1,68) Lun 05.01.2015 13:01
Con la prima parte (nome del sistema + caricamento) in verde e la data in rosa. Utile e difficile da perdere!
Ho trovato un'altra soluzione:
modifica la tua .screenrc
, quindi la mia sessione dello schermo sembra completamente diversa dal normale terminale.
.screenrc
file di esempio .
Fare un screen -ls
. Indica esplicitamente Attached
contro lo Detached
stato.
Esempio allegato:
$ screen -ls | grep tached
3132.pts-0.esavo00 (Attached)
Esempio distaccato:
$ screen -ls |grep tached
3132.pts-0.esavo00 (Detached)