Wie erzwinge ich das Trennen des Bildschirms von einer anderen SSH-Sitzung?

158

Ich hatte Screen in einer SSH-Sitzung ausgeführt. Terminal erstarrte. Nach dem Neustart von Terminal glaubt diese Bildschirmsitzung immer noch, dass sie angehängt ist. Vielleicht ist es. Vielleicht weiß ich nicht wirklich, was das bedeutet.

Ich möchte über einen neuen SSH-Login eine Verbindung zu dieser Bildschirmsitzung herstellen. Ich möchte diese Bildschirmsitzung nicht beenden, da dort wichtige Dinge geschehen. :)

Die Optionen, von denen ich glaube, dass ich sie habe (von denen ich keine zu lösen weiß):

  • Wie trenne ich diese Bildschirmsitzung?
  • Wie kann ich die SSH-Sitzung beenden, an die diese Bildschirmsitzung angehängt ist?
T. Brian Jones
quelle

Antworten:

251

Wie Jose antwortete, screen -d -rsollte er den Trick machen. Dies ist eine Kombination aus zwei Befehlen aus der Manpage.

screen -dTrennt die bereits ausgeführte Bildschirmsitzung und screen -rfügt die vorhandene Sitzung erneut hinzu. Durch Ausführen screen -d -rzwingen Sie den Bildschirm, ihn zu trennen, und setzen dann die Sitzung fort.

Wenn Sie das Kapital verwenden -D -RR, zitiere ich die Manpage, weil es zu gut ist, um darauf zu verzichten.

Hier und jetzt anhängen. Was auch immer das bedeutet, mach es einfach.

Hinweis: Es ist immer eine gute Idee, den Status Ihrer Sitzungen mithilfe der "Bildschirmliste" zu überprüfen.

Matt S.
quelle
3
Sie können auch etwas tun, screen -xdas schneller zu tippen ist, aber nicht ganz gleichwertig. Die Sitzung wird ein zweites Mal angehängt, ohne zuvor getrennt zu werden, was zu einem Mehrfachanzeigemodus führt.
23.
10
erinnere dich an "Screen Doctor"; screen -Dr
user5359531
43

versuchen Sie es mit screen -d -roderscreen -D -RR

Jose Luis Martin
quelle
6

Kurze Antwort

  1. Bringen Sie es wieder an, ohne andere auszuwerfen: screen -x
  2. Liste der Anzeigen abrufen : ^A *, Wählen Sie die zu trennende aus und drücken Sied


Erklärte Antwort

Hintergrund: Als ich nach einer Lösung mit derselben Problembeschreibung suchte, bin ich immer auf diese Antwort gestoßen. Ich möchte eine vernünftigere Lösung anbieten. (Beispiel: Der andere angehängte Bildschirm hat eine andere Größe und ich kann die Größenänderung in meinem Terminal nicht erzwingen.)

Hinweis: PREFIX ist normalerweise ^A=ctrl+a

Hinweis: Die Anzeige kann auch aufgerufen werden:

  • "Benutzer-Frontend" (in der atBedienungsanleitung auf dem Bildschirm)
  • "client" (tmux-Vokabular, in dem sich diese Funktionalität befindet detach-client)
  • "terminal" (wie wir das Fenster in unserer Benutzeroberfläche nennen) / abhängig von

1. Schließen Sie eine Sitzung erneut an :screen -x

-xAn eine nicht getrennte Bildschirmsitzung anhängen, ohne sie zu trennen

2. Listen Sie die Anzeigen dieser Sitzung auf:PREFIX *

Dies ist die Standardschlüsselbindung für : PREFIX :displays. Identifizieren Sie die andere Anzeige, die wir trennen möchten (z. B. kleinere Größe) , indem Sie sie auf dem Bildschirm ausführen . (Ihre aktuelle Anzeige wird in hellerer Farbe / Fett angezeigt, wenn sie nicht ausgewählt ist. )

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

Mit Pfeilen , wählen Sie die gezielte Display , drücken d Wenn nichts passiert, Sie versucht , Ihre eigene Anzeige zu lösen und Bildschirm wird es nicht lösen. Wenn es ein anderer war, verschwindet der Eintrag innerhalb von ein oder zwei Sekunden.

Drücken Sie ENTER, um die Liste zu beenden.

Optional: Um den Inhalt an Ihren Bildschirm anzupassen , führen Sie einen Reflow durch : PREFIX F(Großbuchstabe F)

Auszug aus der Manpage des Bildschirms:

Anzeigen

Zeigt eine tabellarische Auflistung aller aktuell verbundenen Benutzer-Frontends (Anzeigen) an. Dies ist am nützlichsten für Mehrbenutzersitzungen. Die folgenden Tasten können in der Anzeigeliste verwendet werden:

  • mouseclickGehen Sie zur ausgewählten Zeile. Verfügbar, wenn "Mousetrack" aktiviert ist.
  • space Aktualisieren Sie die Liste
  • d Nehmen Sie diese Anzeige ab
  • D Trennen Sie das Display von der Stromversorgung
  • C-g, enterOder escapeVerlassen Sie die Liste
user10874456
quelle
-2

Versuchen Sie den Befehl screen -d -r. Das hat bei mir funktioniert ..!

Vimal Surendran
quelle
2
Das Wiederholen der akzeptierten, 6 Jahre alten Antwort ist nicht hilfreich
jeb