¿Cómo recuperar una sesión de pantalla 'perdida'?

80

De alguna manera, logré cerrar una ventana de pantalla sin que la pantalla lo 'notara', por lo que la sesión todavía está marcada como attached. Esto me impide volver a unirme a esta sesión. ¿Que puedo hacer?

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.

[actualizar]

Al final descubrí que la sesión no se perdió, pero el ID de la primera sesión sí 0. La segunda sesión que tiene la ID 1.

Framester
fuente

Respuestas:

108

Intente separarlo primero con screen -d. Si eso no funciona, puede intentar, en orden creciente de énfasis ,

   -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
fuente
11
las -d -ropciones juntas forzarán adjuntar esa sesión.
Tim Kennedy el
Siempre uso screen -xpara poder adjuntar desde múltiples ubicaciones a la vez. Por supuesto, si accidentalmente cierra una ventana, parece que -d -res mejor mantener las cosas ordenadas.
mpontillo
5
screen -r '1234.somescreensession'

Hay una pantalla en:

1234.somescreensession (adjunto)

No hay una pantalla para reanudar que coincida con 1234.somescreensession.

Aquí hay una manera simple de recuperar esa sesión de pantalla.

screen -D -r '1234.somescreensession'
bresti
fuente
4

Experimenté el mismo problema después de que mi conexión ssh se cerró inesperadamente con el mensaje Write Failed: broken pipemientras tenía una sesión de pantalla adjunta. Sin embargo, no pude volver a conectar mi sesión de pantalla con ninguno de los comandos anteriores. Tenga en cuenta que uso la siguiente versión:

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

Aparentemente, todavía hubo una instancia de sshdejecución, lo que me impidió separar y volver a conectar la sesión. Después de identificar la PIDinstancia apropiada de sshdy killpude volver a conectarla screen -r.


Solo para información: Definitivamente encontrará más de un sshddemonio, uno corresponderá a su inicio de sesión actual y otro perteneciente a la screensesión obsoleta (de hecho, podría haber varios otros en sshdejecución que pertenecen a varios otros screen).

el_tenedor
fuente
Tuve el mismo problema, buena llamada
dianovich
3

Algunas veces las pantallas múltiples se ejecutan en segundo plano.

Pueden ser reanudados por:

screen -r [pid]

Para obtener la pantalla, primero ejecute screen -R, luego verá todos los PID en ejecución de la pantalla, luego de eso reanudará screen -r [pid].

Shiv Singh
fuente