Comment forcer le détachement de Screen d'une autre session SSH?

158

J'ai fait fonctionner Screen dans une session SSH. Le terminal a gelé. Après le redémarrage du Terminal, cette session Screen pense toujours qu'elle est attachée. Peut etre c'est. Peut-être que je ne sais pas vraiment ce que cela signifie.

Je voudrais attacher à cette session Screen à partir d'une nouvelle connexion SSH. Je ne veux pas tuer cette session Screen car des choses importantes se passent là-bas. :)

Les options que je pense avoir (aucune dont je ne sais comment résoudre):

  • Comment dissocier cette session Screen?
  • Comment supprimer la session SSH à laquelle cette session Screen est attachée?
T. Brian Jones
la source

Réponses:

252

Comme Jose a répondu, screen -d -rdevrait faire l'affaire. Il s'agit d'une combinaison de deux commandes, tirées de la page de manuel.

screen -ddétache la session d'écran déjà en cours et screen -rrattache la session existante. En exécutant screen -d -r, vous forcez screen à le détacher puis à reprendre la session.

Si vous utilisez la majuscule -D -RR, je cite la page de manuel car elle est trop belle pour la laisser passer.

Joindre ici et maintenant. Quoi que cela signifie, faites-le.

Remarque: Il est toujours judicieux de vérifier l'état de vos sessions au moyen de "screen-list".

Matt S.
la source
3
Vous pouvez également faire screen -xce qui est plus rapide à taper, mais pas tout à fait équivalent. Il attachera la session une deuxième fois sans se détacher d'abord, ce qui se traduira par un mode d'affichage multiple.
jlh le
10
souvenez-vous de "Screen Doctor"; screen -Dr
user5359531
43

essayez avec screen -d -rouscreen -D -RR

José Luis Martin
la source
6

Réponse courte

  1. Rattachez sans en éjecter les autres: screen -x
  2. Obtenir la liste des affichages:, ^A *sélectionnez celui à déconnecter, appuyez surd


Réponse expliquée

Contexte: Lorsque je cherchais la solution avec la même description de problème, j'ai toujours atterri sur cette réponse. Je voudrais apporter une solution plus sensée. (Par exemple: l'autre écran connecté a une taille différente et je ne peux pas forcer le redimensionnement dans mon terminal.)

Remarque: PREFIX est généralement ^A=ctrl+a

Remarque: l' écran peut également être appelé:

  • "user front-end" (dans atle manuel de commande à l'écran)
  • "client" (vocabulaire tmux où se trouve cette fonctionnalité detach-client)
  • "terminal" (comme nous appelons la fenêtre dans notre interface utilisateur) / en fonction de

1. Rattachez une session :screen -x

-xattacher à une session écran non détachée sans la détacher

2. Liste des affichages de cette session:PREFIX *

Il est la clé par défaut obligatoire pour: PREFIX :displays. En l'exécutant dans l'écran, identifiez l'autre écran que nous voulons déconnecter (par exemple, une taille plus petite). (Votre affichage actuel est affiché dans des couleurs plus vives / gras lorsqu'il n'est pas sélectionné ).

term-type   size         user interface           window       Perms
---------- ------- ---------- ----------------- ----------     -----
 screen     240x60         you@/dev/pts/2      nb  0(zsh)        rwx
 screen      78x40         you@/dev/pts/0      nb  0(zsh)        rwx

À l'aide des flèches , sélectionnez l' affichage ciblé , appuyez sur d Si rien ne se passe, vous avez essayé de détacher votre propre affichage et l'écran ne le détachera pas. S'il s'agissait d'un autre, dans une seconde ou deux, l'entrée disparaîtra.

Appuyez sur ENTERpour quitter la liste.

En option: pour que le contenu s'adapte à votre écran, redistribuez : PREFIX F(F majuscule)

Extrait de la page de manuel de l'écran:

affiche

Affiche une liste tabulaire de tous les frontaux (affichages) des utilisateurs actuellement connectés. Ceci est très utile pour les sessions multi-utilisateurs. Les touches suivantes peuvent être utilisées dans la liste des affichages:

  • mouseclickPassez à la ligne sélectionnée. Disponible lorsque "mousetrack" est activé.
  • space Rafraîchir la liste
  • d Détachez cet écran
  • D Détachez cet écran
  • C-g, enterOu escapequitter la liste
user10874456
la source
-2

Essayez la commande screen -d -r. Cela a fonctionné pour moi ..!

Vimal Surendran
la source
2
Répéter la réponse acceptée de 6 ans n'est pas utile
jeb