Jak odzyskać „utraconą” sesję ekranu?

80

W jakiś sposób udało mi się zamknąć okno ekranu, nie zauważając go, więc sesja nadal jest oznaczana jako attached. To uniemożliwia mi ponowne dołączenie do tej sesji. Co mogę zrobić?

me@iupr-serv8:~$ screen -r
There are several suitable screens on:
    25028.pts-19.XXX-serv8  (01/05/2012 07:15:34 PM)    (Attached)
    24658.pts-19.XXX-serv8  (01/05/2012 07:11:38 PM)    (Detached)
    24509.pts-19.XXX-serv8  (01/05/2012 07:10:00 PM)    (Detached)
    18676.pts-5.XXX-serv8   (01/02/2012 06:55:33 PM)    (Attached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
me@XXX-serv8:~$ screen -r 25028
There is a screen on:
    25028.pts-19.XXX-serv8  (01/05/2012 07:15:33 PM)    (Attached)
There is no screen to be resumed matching 25028.

[aktualizacja]

W końcu dowiedziałem się, że sesja nie została utracona, ale identyfikator pierwszej sesji to 0. Druga sesja niż ma identyfikator 1.

Framester
źródło

Odpowiedzi:

108

Spróbuj go najpierw odłączyć screen -d. Jeśli to nie zadziała, możesz spróbować, w kolejności rosnącej nacisku ,

   -d|-D [pid.tty.host]
        does  not  start screen, but detaches the elsewhere running screen session. It has the
        same effect as typing "C-a d" from screen's controlling terminal. -D is the equivalent
        to  the  power  detach key.  If no session can be detached, this option is ignored. In
        combination with the -r/-R option more powerful effects can be achieved:

   -d -r   Reattach a session and if necessary detach it first.

   -d -R   Reattach a session and if necessary detach or even create it first.

   -d -RR  Reattach a session and if necessary detach or create it. Use the first  session  if
           more than one session is available.

   -D -r   Reattach a session. If necessary detach and logout remotely first.

   -D -R   Attach  here and now. In detail this means: If a session is running, then reattach.
           If necessary detach and logout remotely first.  If it was not running create it and
           notify the user. This is the author's favorite.

   -D -RR  Attach here and now. Whatever that means, just do it.
angus
źródło
11
te -d -ropcje razem zmusi dołączyć tej sesji.
Tim Kennedy,
Zawsze używam, screen -xaby móc dołączać z wielu lokalizacji jednocześnie. Oczywiście, jeśli przypadkowo zamkniesz okno, wydaje się, że -d -rlepiej jest po prostu utrzymać porządek.
mpontillo
5
screen -r '1234.somescreensession'

Jest ekran na:

1234.somescreensession (Attached)

Brak ekranu do wznowienia pasującego do 1234.somescreensession.

Oto prosty sposób na przywrócenie tej sesji ekranowej.

screen -D -r '1234.somescreensession'
bresti
źródło
4

Ten sam problem wystąpił po nieoczekiwanym zamknięciu połączenia ssh z komunikatem, Write Failed: broken pipegdy miałem dołączoną sesję ekranową. Nie udało mi się jednak przywrócić sesji ekranowej przy użyciu żadnego z powyższych poleceń. Pamiętaj, że używam następującej wersji:

~> screen --version
Screen version 4.00.03 (FAU) 23-Oct-06

Najwyraźniej wciąż istniała instancja sshd, która powstrzymywała mnie od odłączania i ponownego dołączania sesji. Po zidentyfikowaniu PIDodpowiedniego wystąpienia sshdi killzainicjowaniu go udało mi się ponownie podłączyć screen -r.


Tylko dla informacji: na pewno znajdziesz więcej niż jednego sshddemona, jeden będzie odpowiadał twojemu bieżącemu loginowi, a drugi przynależy do przestarzałej screensesji (w rzeczywistości może być wiele innych sshduruchomionych należących do wielu innych screen).

el_tenedor
źródło
Miałem ten sam problem dobre połączenie
dianowicz
3

Czasami wiele ekranów działa w tle.

Można je wznowić poprzez:

screen -r [pid]

Aby uzyskać ekran, najpierw uruchom screen -R, a następnie zobaczysz wszystkie działające identyfikatory PID ekranu, a następnie wznowione przez screen -r [pid].

Shiv Singh
źródło