120 votes

Comment vérifier si je suis en session écran ?

J'en ai besoin pour déterminer si frapper ctrl + d me déconnecterait du serveur ou fermerait simplement l'actuelle screen .

Est-il possible de vérifier si je suis en ce moment même dans screen session ?

171voto

user9517 Points 113163

Vous pouvez consulter le $STY (une variable définie par le commande d'écran ). Si ce n'est pas "", 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

$

13 votes

Cela suppose que vous êtes toujours dans une session en cours sur l'ordinateur local. Si vous démarrez screen puis SSH ailleurs, cela ne fonctionnera pas.

2 votes

if test -n "$STY"; then printf "This is a screen session named '$STY'.\n"; else printf "This is NOT a screen session.\n"; fi

3 votes

@DavidMackintosh si vous êtes connecté en SSH à un autre endroit, appuyer sur ctrl-D me déconnectera du serveur, ce qui est exactement ce que la question demande.

56voto

ewwhite Points 193555

Vous pouvez regarder la variable $TERM.

echo $TERM

Si c'est un screen la variable term devrait renvoyer "screen".

root@deore:/volumes# echo $TERM
screen

Ctrl-a -d (pour quitter l'écran)

root@deore:/volumes# echo $TERM
xterm

Vérifiez également : https://stackoverflow.com/questions/3472287/how-do-you-tell-if-the-current-terminal-session-is-in-gnu-screen

4 votes

Cela suppose que vous ne modifiez pas délibérément votre valeur TERM pour une raison quelconque.

1 votes

Si vous modifiez votre variable TERM à l'intérieur de l'écran, vous vous exposez à toutes sortes de problèmes.

0 votes

Eh bien, mes nœuds Solaris 2.6 ne fonctionnent pas bien avec les valeurs TERM définies comme des valeurs d'écran.

39voto

Gurgeh Points 433

À moins que vous n'ayez modifié les liaisons de touches par défaut, vous pouvez effectuer les opérations suivantes Ctrl + a -> Ctrl + t qui affichera l'heure, si vous êtes à l'écran. Cela fonctionnera même si vous êtes parti en ssh:d ailleurs, contrairement aux autres suggestions.

4 votes

Pourquoi on ne vote pas pour ça ?

0 votes

C'est certainement la meilleure solution ici.

1 votes

En quoi est-ce la meilleure solution ? Et si vous pas à l'écran, et ^A^T la séquence de touches pour "nuke your homedir" est dans le programme que vous exécutez actuellement ?

24voto

Gaëtan Lehmann Points 321

El caption dans le ~/.screenrc est un moyen agréable de différencier une session d'écran.

Je l'utilise personnellement :

$ 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 au 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 !

2 votes

C'est parfait ! Il ne gêne pas (position basse), il est toujours visible (et coloré) et fournit des informations utiles sur le système. J'ai aussi posté ceci ici stackoverflow.com/a/43571028/2450431

7voto

Logan Points 66

J'ai trouvé une autre solution :
Modifiez votre .screenrc Ainsi, ma session d'écran est complètement différente du terminal normal.

1 votes

Je pense que je sais ce que vous suggérez, et ça pourrait dans certaines situations éviter entièrement ce problème. Il serait plus utile de décrire ce que vous voulez dire en montrant (par exemple) un exemple. .screenrc fichier.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X