L '"écran" fait référence à un programme mentionné dans Comment se reconnecter à une session SSH déconnectée . C'est un bon établissement.
Mais il y a une question que j'aimerais vraiment savoir. Comment savoir si je cours dans un "écran"? La différence est:
- Si tel est le cas, je sais que je peux fermer en toute sécurité la fenêtre du terminal actuel, par exemple, une fenêtre PuTTY, sans perdre ma session shell (Bash, etc.).
- Si non, je sais que je dois m'occuper des travaux en attente avant de fermer la fenêtre du terminal.
Mieux, j'aimerais que cet état soit affiché dans l'invite PS1 afin que je puisse le voir à tout moment automatiquement.
linux
gnu-screen
Jimm Chen
la source
la source
Réponses:
(Volé dans " Comment savoir si je suis dans un écran? " Sur StackOverflow et écrit par l'utilisateur jho . PS: vous ne pouvez pas voter pour un duplicata sur les sites StackExchange.)
Vérifiez
$STY
. Si c'est nul, vous êtes sur un "vrai" terminal. S'il contient quelque chose, c'est le nom de l'écran dans lequel vous êtes.Si vous n'êtes pas à l'écran:
Si vous êtes à l'écran:
Si vous utilisez tmux au lieu d’écran, cochez également
$TMUX
. Pour ajouter ceci à votre invite, ajoutez ce qui suit à votre~/.bashrc
:la source
sudo
par défaut, il n'héritera pas des variables d'environnement, y compris$STY
. Mais est généralement propagé à l'environnement sudo, alors vérifiez peut-être ou$TERM
$STY
$TERM=="screen"
Recherchez
$STY
ce qui fournit des détails quiscreen
utilisent pour communiquer avec lui-même;$WINDOW
sera alors lescreen
numéro de la fenêtre en cours .la source
La simple vérification que j’utilise habituellement est d’appuyer simplement sur Ctrl- a:
Si le curseur saute au début de la ligne , je ne suis pas dans une session d'écran.
Si rien ne se passe , je sais que je suis dans une session d'écran et que je viens d'utiliser la touche de commande d'écran. Je tape ensuite a(saute au début de la ligne), w(affiche les fenêtres d'écran actuelles) ou exécute une autre commande d'écran "inoffensive" pour revenir à l'invite de commande.
(Bien sûr, cela ne fonctionne que si vous exécutez actuellement bash ou un autre logiciel qui "saute au début de la ligne" ou fait quelque chose d'inoffensif quand vous tapez Ctrl-a.)
la source
Eh bien, la plupart du temps (sans que quelqu'un essaie de tout gâcher), votre
TERM
volonté sera régléescreen
(ou du moins, mentionnéescreen
quelque part).La solution facile au problème consiste simplement à exécuter l'écran partout. Ne partez pas sans elle, dis-je.
la source
$TERM
se propage aussi généralement à traverssudo
, ce qui est un plus!Je garde cela dans mon
.bashrc
: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 ne cours pas
screen
, il n'y a pas de numéro.la source
J'ai une façon encore plus cool.
Ajoutez ce qui suit à votre ~ / .screenrc et vous verrez une ligne d’état en bas (indiquant en texte inversé la date, l’heure et la charge du système. Plus de codes d’échappement trouvés dans le lien de la page de manuel ci-dessous.
Source cette quand dans une session d'écran avec
ctrl-a:source ~/.screenrc
.Je dois remercier Kyle Rankin de Linux Journal pour cela. Voir son article fantastique sur http://www.linuxjournal.com/article/10950 . La section de page de manuel à laquelle il fait référence se trouve à l’ adresse http://www.gnu.org/software/screen/manual/screen.html#String-Escapes .
la source
vous pouvez également consulter l’arbre de processus depuis
$$
pour voir si vous trouvez une instance d’écran. la chaîne exacte dépendra probablement de votre configuration - sur mon OS X, unzsh
écran intérieur alogin
pour parent,SCREEN
commescreen
grand-parent et comme arrière-grand-parent.la source