60 votes

Comment puis-je savoir si je suis à l'intérieur d'un "écran" linux ou non ?

Le "screen" fait référence à un programme mentionné dans Comment se reconnecter à une session ssh déconnectée ? . C'est une bonne installation.

Mais il y a une question que j'aimerais vraiment savoir. Comment puis-je savoir si je suis à l'intérieur d'un "écran" ? La différence est la suivante :

  • Si oui, je sais que je peux fermer en toute sécurité la fenêtre du terminal actuel, par exemple, fermer une fenêtre PuTTY, sans perdre ma session Shell(Bash etc).
  • Si non, je sais que je dois m'occuper des travaux en cours avant de fermer la fenêtre du terminal.

Mieux, j'aimerais que ce statut soit affiché dans le prompt PS1 afin que je puisse le voir à tout moment automatiquement.

89voto

Wesley Points 32020

(Tiré de " Comment puis-je savoir si je suis dans un écran ? " sur StackOverflow et écrit par l'utilisateur jho . P.S. Vous ne pouvez pas voter pour un doublon entre les sites StackExchange).

Vérifiez $STY . S'il est nul, vous êtes sur un "vrai" terminal. S'il contient quelque chose, c'est le nom de l'écran dans lequel vous vous trouvez.

Si vous n'êtes pas à l'écran :

eric@dev ~ $ echo $STY
eric@dev ~ $ 

Si vous êtes à l'écran :

eric@dev ~ $ echo $STY
2026.pts-0.ip-10-0-1-71

Si vous utilisez tmux au lieu de screen, vérifiez aussi $TMUX . Pour ajouter cette fonction à votre invite, ajoutez ce qui suit à votre page d'accueil ~/.bashrc :

if [ -n "$STY" ]; then export PS1="(screen) $PS1"; fi
if [ -n "$TMUX" ]; then export PS1="(tmux) $PS1"; fi

15voto

geekosaur Points 6915

Cherchez $STY qui fournit des détails qui screen utilise pour communiquer avec lui-même ; $WINDOW sera alors l'actuel screen numéro de la fenêtre.

13voto

Heinzi Points 2058

La vérification la plus simple que j'utilise habituellement est d'appuyer sur Ctrl - a :

  • Si el le curseur saute au début de la ligne Je suis pas à l'intérieur une session d'écran.

  • Si rien ne se passe Je sais que Je suis à l'intérieur une session écran et que je viens d'utiliser la touche de contrôle de l'écran. J'appuie ensuite sur a (saut au début de la ligne), w (show current screen Windows) ou exécuter une autre commande écran "inoffensive" pour revenir à l'invite de commande.

(Bien sûr, cela ne fonctionne que si vous êtes en train d'exécuter bash ou un autre logiciel qui "saute au début de la ligne" ou fait quelque chose d'équivalent inoffensif lorsque vous appuyez sur Ctrl-a).

7voto

Ryan Sampson Points 2898

Bien, le plus du temps (en l'absence de tentatives de manipulation de la part de quelqu'un), votre TERM sera réglé sur screen (ou au moins mentionner screen quelque part).

La solution facile au problème est d'utiliser des écrans partout. Ne quittez pas la maison sans lui, je dis.

7voto

Josh Points 181

Je garde ça dans mon .bashrc :

 PS1='[\u@\h \W'
 if [ "$WINDOW" ]; then PS1="$PS1 ($WINDOW)"; fi
 PS1="$PS1]$"

Ce n'est pas infaillible, mais chaque fois que je crée un nouvel écran, le numéro de la fenêtre apparaît dans l'invite. Si je n'exécute pas screen il n'y a pas de numéro.

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