No se puede reanudar la pantalla, dice que ya estoy adjunto?

151

Estoy trabajando en un servidor remoto de Debian Jessie. Comencé una sesión de pantalla, comencé a ejecutar un script y luego me desconecté por un tiempo de espera de la red.

Ahora he vuelto a iniciar sesión y quiero reanudar la sesión.

Esto es lo que veo cuando enumero pantallas:

$ screen -ls
There are screens on:
    30608.pts-8.myserver    (11/03/2015 08:47:58 AM)    (Attached)
    21168.pts-0.myserver    (11/03/2015 05:29:24 AM)    (Attached)
    7006.pts-4.myserver (10/23/2015 09:05:45 AM)    (Detached)
    18228.pts-4.myserver    (10/21/2015 07:50:49 AM)    (Detached)
    17849.pts-0.myserver    (10/21/2015 07:43:53 AM)    (Detached)
5 Sockets in /var/run/screen/S-me.

Parece que estoy conectado a dos pantallas a la vez.

Ahora quiero reanudar la sesión que estaba ejecutando antes, para ver los resultados de mi script:

$ screen -r 30608.pts-8.myserver
There is a screen on:
    30608.pts-8.OpenPrescribing (11/03/2015 08:47:58 AM)    (Attached)
There is no screen to be resumed matching 30608.pts-8.myserver.

¿Por qué no puedo volver a adjuntar?

Tengo el mismo problema con la otra pantalla:

$ screen -r 21168.pts-0.myserver
There is a screen on:
    21168.pts-0.OpenPrescribing (11/03/2015 05:29:24 AM)    (Attached)
There is no screen to be resumed matching 21168.pts-0.myserver.
Ricardo
fuente

Respuestas:

242

La sesión todavía está adjunta en otra terminal. El servidor no ha detectado la interrupción de la red en esa conexión: solo detecta la interrupción cuando intenta enviar un paquete y recibe un error o no responde después de un tiempo de espera, pero esto aún no ha sucedido. Se encuentra en una situación común en la que el cliente detectó la interrupción del servicio porque intentó enviar alguna entrada y falló, pero el servidor solo está allí esperando la entrada. Finalmente, el servidor enviará un paquete keepalive y detectará que la conexión está desconectada.

Mientras tanto, use la -dopción para separar la sesión de pantalla del terminal donde está.

screen -r -d 30608

screen -rd es más o menos la forma estándar de adjuntar a una sesión de pantalla existente.

Gilles
fuente
15
Para adjuntarlo a una sesión de pantalla existente screen -x, screen -rdes adjuntarlo después de haberlo desconectado de cada terminal al que estaba conectado. En el caso del OP, estoy de acuerdo en que este último probablemente sea el preferido, pero en el caso general, no necesariamente. Generalmente uso -xRpara adjuntar o crear si no hay nada que adjuntar.
Stéphane Chazelas
10

Según el manual , puede "reanudar" solo las pantallas separadas :

' [partido] ' ' [partido] ' No inicie la pantalla, sino que imprima una lista de cadenas de identificación de sesión (generalmente de la forma pid.tty.host; ver Nombre de sesión). Las sesiones marcadas como 'separadas' se pueden reanudar con . Los marcados como 'adjuntos' se están ejecutando y tienen un terminal de control. Si la sesión se ejecuta en modo multiusuario, se marca 'multi'. Las sesiones marcadas como 'inalcanzables' viven en un host diferente o están muertas. Una sesión inalcanzable se considera inactiva, cuando su nombre coincide con el nombre del host local o con el parámetro especificado, si lo hay. Ver el-ls
-list
screen -r-rmarca para una descripción de cómo construir coincidencias. Las sesiones marcadas como 'muertas' deben verificarse y eliminarse a fondo. Consulte al administrador del sistema si no está seguro. Eliminar sesiones con la -wipeopción ' '.

Lo que quieres es esta opción:

' -x'
Adjuntar a una sesión que ya está adjunta en otro lugar (modo de visualización múltiple). La pantalla se niega a adjuntar desde su interior. Pero cuando se conectan varias pantallas en cascada, no se detectan bucles; Cuídate.

Thomas Dickey
fuente
44
Con -xuna sesión todavía se adjuntará 'en alguna parte'. Para hacerse cargo de la sesión por completo, se debe usar -d | -D (opciones de desconexión) junto con -r | -R (opciones de reconexión).
Andrew Kozlov
1
Esa es una alternativa, pero puede que no sea lo que OP necesita. Con frecuencia adjunto desde múltiples ubicaciones.
Thomas Dickey el
4

Adjunto a la pantalla con opciones -rD

Del manual:

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