web-dev-qa-db-fra.com

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

Screen fonctionnait dans une session SSH. Le terminal a gelé. Après avoir redémarré 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.

J'aimerais associer à cette session Screen une nouvelle connexion SSH. Je ne veux pas tuer cette session Screen car il se passe des choses importantes là-bas. :)

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

  • Comment puis-je détacher cette session Screen?
  • Comment puis-je tuer la session SSH à laquelle cette session Screen est attachée?
135
T. Brian Jones

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

screen -d détache la session écran déjà en cours d'exécution et screen -r rattache la session existante. En exécutant screen -d -r, vous forcez l'écran à le détacher, puis vous reprenez la session.

Si vous utilisez la majuscule -D -RR, je cite la page de manuel car il est trop beau pour être laissé passer.

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

Remarque: il est toujours judicieux de vérifier l'état de vos sessions à l'aide de la "liste-écrans".

213
Matt S.

essayez avec screen -d -r ou screen -D -RR

39
Jose Luis Martin

Réponse courte

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

Réponse expliquée

Background: Quand je cherchais la solution avec la même description du problème, j'ai toujours atterri sur cette réponse. Je voudrais fournir une solution plus raisonnable. (Par exemple: l'autre écran connecté a une taille différente et je ne peux pas le redimensionner de force dans mon terminal.)

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

Remarque: le affichage peut également être appelé:

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

1. Rattachez une session ) : screen -x

-x attache à une session d'écran non détachée sans la détacher

2. Liste affiche de cette session: PREFIX*

C'est la liaison de clé par défaut pour: PREFIX:displays. Effectuez-le à l’écran, identifiez l’autre affichage que vous souhaitez déconnecter (par exemple, une taille plus petite). (Votre affichage actuel est affiché en couleur plus claire/en 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

En utilisant les flèches , sélectionnez l’affichage ciblé , appuyez sur d Si rien ne se passe, vous avez essayé de détacher votre propre écran et votre écran ne le détacheront pas. Si c'en était une autre, dans une seconde ou deux, l'entrée disparaîtra.

Appuyez sur ENTER pour quitter la liste.

Facultatif: pour que le contenu s'adapte à votre écran, restituez votre message : PREFIXF (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 d’affichage:

  • mouseclick Se déplacer sur la ligne sélectionnée. Disponible lorsque "mousetrack" est activé.
  • space Actualiser la liste
  • d Détachez cet affichage
  • D Détachez l'alimentation de cet affichage
  • C-g, enter ou escape Quitter la liste
5
user10874456