Réponses:
Vous pouvez regarder la $STY
variable (une variable définie par la commande screen ). Si ce n'est pas "" alors vous êtes dans une session d'écran.
Je suis à l'écran
$ echo $STY
29624.pts-1.iain-10-04
$
Je ne suis pas à l'écran
$ 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
Vous pouvez regarder la variable $ TERM.
echo $TERM
S'il s'agit d'une screen
session, le terme variable devrait renvoyer "screen".
root@deore:/volumes# echo $TERM
screen
Ctrl-a -d (pour quitter l'écran)
root@deore:/volumes# echo $TERM
xterm
Consultez également: https://stackoverflow.com/questions/3472287/how-do-you-tell-if-the-current-terminal-session-is-in-gnu-screen
"$TERM" = "screen"
semble être préservé en entrant dans l' sudo
environnement, contrairement à l' $STY
option.
Sauf si vous avez modifié les raccourcis clavier par défaut, vous pouvez faire Ctrl+ a-> Ctrl+ t, ce qui affichera l'heure si vous êtes à l'écran. Cela fonctionnera même si ssh: d est absent quelque part, contrairement aux autres suggestions.
La caption
commande dans ~/.screenrc
est un bon moyen de différencier une session d’écran.
J'utilise personnellement ceci:
$ cat ~/.screenrc
caption always "%{= kc}Screen session on %H (system load: %l)%-28=%{= .m}%D %d.%m.%Y %0c"
Il ajoute une ligne comme celle-ci en bas de l'écran:
Screen session on gbook (system load: 1,75 1,74 1,68) Lun 05.01.2015 13:01
Avec la première partie (nom du système + charge) en vert et la date en rose. Utile et difficile à manquer!
J'ai trouvé une autre solution:
Modifiez votre .screenrc
, de sorte que ma session d'écran est complètement différente de celle d'un terminal normal.
.screenrc
fichier exemple .
Faire un screen -ls
. Cela va explicitement indiquer le statut Attached
versus Detached
.
Exemple ci-joint:
$ screen -ls | grep tached
3132.pts-0.esavo00 (Attached)
Exemple détaché:
$ screen -ls |grep tached
3132.pts-0.esavo00 (Detached)