Jak wymusić odłączenie ekranu od innej sesji SSH?

158

Miałem Screen działający w ramach sesji SSH. Terminal zamarł. Po ponownym uruchomieniu terminala sesja Screen nadal uważa, że ​​jest podłączona. Może to jest. Może tak naprawdę nie wiem, co to znaczy.

Chciałbym dołączyć do tej sesji Screen z nowego loginu SSH. Nie chcę zabijać tej sesji Screen, ponieważ tam dzieją się ważne rzeczy. :)

Opcje, które myślę, że mam (z których żadna nie wiem, jak rozwiązać):

  • Jak odłączyć tę sesję Screen?
  • Jak zabić sesję SSH, do której jest dołączona ta sesja Screen?
T. Brian Jones
źródło

Odpowiedzi:

252

Jak odpowiedział Jose, screen -d -rpowinno załatwić sprawę. To jest kombinacja dwóch poleceń, wziętych ze strony podręcznika.

screen -dodłącza już uruchomioną sesję screen i screen -rponownie przyłącza istniejącą sesję. Uruchamiając screen -d -r, wymuszasz odłączenie go, a następnie wznawiasz sesję.

Jeśli używasz dużego kapitału -D -RR, cytuję stronę podręcznika, ponieważ jest zbyt dobra, aby z niej zrezygnować.

Dołącz tu i teraz. Cokolwiek to oznacza, po prostu zrób to.

Uwaga: Zawsze dobrze jest sprawdzić stan swoich sesji za pomocą „listy ekranów”.

Matt S.
źródło
3
Możesz także zrobić screen -xto, co jest szybsze do wpisania, ale nie do końca równoważne. Sesja zostanie podłączona po raz drugi bez wcześniejszego odłączania, co spowoduje przejście do trybu wielu wyświetlaczy.
jlh
10
zapamiętaj „Screen Doctor”; screen -Dr
user5359531
43

spróbuj z screen -d -rlubscreen -D -RR

Jose Luis Martin
źródło
6

Krótka odpowiedź

  1. Podłącz ponownie bez wypychania innych: screen -x
  2. Pobierz listę wyświetlaczy: ^A *wybierz ten, który chcesz odłączyć, naciśnijd


Wyjaśniona odpowiedź

Tło: Kiedy szukałem rozwiązania z tym samym opisem problemu, zawsze trafiałem na tę odpowiedź. Chciałbym zaproponować bardziej sensowne rozwiązanie. (Na przykład: drugi dołączony ekran ma inny rozmiar i nie mogę wymusić zmiany rozmiaru w moim terminalu).

Uwaga: PREFIX zwykle jest ^A=ctrl+a

Uwaga: wyświetlacz może być również nazywane:

  • „interfejs użytkownika” (w atinstrukcji poleceń na ekranie)
  • „klient” (słownictwo tmux, jeśli ta funkcja jest detach-client)
  • „terminal” (jak nazywamy to okno w naszym interfejsie użytkownika) / w zależności od

1. Ponownie dołącz sesję :screen -x

-xdołączyć do nieodłączonej sesji screen bez jej odłączania

2. Lista ekranów tej sesji:PREFIX *

To jest klucz domyślny wiążące dla: PREFIX :displays. Wykonując to w obrębie ekranu, zidentyfikuj drugi wyświetlacz, który chcemy odłączyć (np. Mniejszy rozmiar). (Twój bieżący ekran jest wyświetlany w jaśniejszym kolorze / pogrubiony, gdy nie jest wybrany ).

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

Za pomocą strzałek wybierz docelowy wyświetlacz , naciśnij. d Jeśli nic się nie dzieje, próbowałeś odłączyć własny wyświetlacz i ekran go nie odłączy. Jeśli był to kolejny, w ciągu sekundy lub dwóch wpis zniknie.

Naciśnij, ENTERaby opuścić aukcję.

Opcjonalnie: aby dopasować zawartość do ekranu, przeformuj ponownie : PREFIX F(wielkie litery F)

Fragment ze strony podręcznika ekranowego:

wyświetlacze

Pokazuje tabelaryczną listę wszystkich interfejsów (wyświetlaczy) aktualnie podłączonych użytkowników. Jest to najbardziej przydatne w sesjach wielu użytkowników. Na liście wyświetlaczy można użyć następujących klawiszy:

  • mouseclickPrzejdź do wybranej linii. Dostępne, gdy funkcja „mousetrack” jest włączona.
  • space Odśwież listę
  • d Odłącz ten wyświetlacz
  • D Odłącz ten wyświetlacz
  • C-g, enterlub escapeWyjdź z listy
user10874456
źródło
-2

Wypróbuj polecenie screen -d -r. To zadziałało dla mnie ..!

Vimal Surendran
źródło
2
Powtarzanie zaakceptowanej, 6-letniej odpowiedzi nie jest pomocne
jeb