No se puede separar la pantalla para reanudar

11

Uso masilla y tengo una conexión inalámbrica poco confiable, así que uso la pantalla para mantener mi trabajo. A menudo me desconecto, y luego no puedo volver a conectar mi pantalla. Correré screen -D -RRy se quedará allí indefinidamente. Intenté ctrl+zrecuperar mi consola, seguido de ps aux | grep screeny luego kill -9para todos los resultados, y luego screen -D -RRnuevamente pero obtengo los mismos resultados. Intento cualquier combinación de d's y r's que quieras mencionar, pero aún así se queda ahí. Mi pantalla está allí, simplemente no hará nada, y mucho menos reanudará.

¿Alguien tiene algún consejo, truco o idea sobre cómo reanudar mi sesión de pantalla?

Dave Aaron Smith
fuente

Respuestas:

16

He visto esto cuando dejo caer una conexión a una pantalla activa y luego me vuelvo a conectar. El error # 27462 ("Reconectar los puestos cuando se pierde la sesión original") describe el problema tal como lo veo. Lo que parece suceder es que esa pantalla está tratando de notificar al tty que lo sostiene que está a punto de salir, pero dado que el tty está colgado debido a una conexión caída, tiene que esperar a que se agote el tiempo de espera (que es más de cinco minutos en algunos casos).

Para solucionarlo, hago esto:

  • averiguar qué tty retiene la sesión de pantalla ps -ef | grep screen | grep pty
  • encuentra el bash de inicio de sesión asociado con ese tty ps -ef | grep bash | grep $PTY
  • matar a esa fiesta kill -KILL $PID

Esto hace que la pantalla complete su desconexión correctamente y le permite volver a conectarse normalmente.

Vea aquí un script de ejemplo que automatiza esto de alguna manera.

David Mackintosh
fuente
ps -ef | pantalla grep | grep tty nunca imprime nada porque ps -ef | grep screen nunca devuelve nada con la cadena tty.
Dave Aaron Smith
En realidad, el script de ejemplo parece hacer el truco. ¡Gracias!
Dave Aaron Smith
1
Sí, quise decir 'pty', no 'tty'.
David Mackintosh el
2

Tuve un problema similar con mis sesiones de pantalla. Los nombro y los configuro como sesiones multiusuario. Lo que encontré fue que estaba enumerando mis sesiones, pero diciéndome que no tenía ninguna para volver a conectarme. Entonces intenté:

screen -x <session_name>

¡Funcionó como un campeón!

Doug Noel
fuente
1

No puedo decir que haya tenido un problema con la pantalla que no regresa, sin importar en qué tipo de conexión esté. Mi método habitual:

ssh myname@foo
screen -S sessionName
(do my work... get disconnected...)

ssh myname@foo
screen -d (just to make sure anything wasn't left attached)
screen -r sessionName
Jason Antman
fuente
1
Por ejemplo, screen -list devuelve 32322.mySession (Adjunto). Entonces pantalla -d mySession. Entonces screen -list todavía devuelve 32322.mySession (Adjunto), y screen -r mySession devuelve No hay pantalla que se pueda reanudar que coincida con daveSession.
Dave Aaron Smith el
intentaste simplemente "screen -d"?
Jason Antman el
0

¿Es posible que este error te esté afectando?

http://savannah.gnu.org/bugs/?27462

¿Puedes intentar hacer la solución que recomiendan y ver si funciona?

Kyle-tummy.com
fuente
La solución no tenía mucho sentido para mí. Mi salida de ps -ef | grep screen no se parece en nada al ejemplo.
Dave Aaron Smith el
0

Alma: https://kb.iu.edu/data/ahrm.html

To see your existing screen sessions, enter:
  screen -list
This will display a list of your current screen sessions. For instance, if you had one attached screen, you would see:

         1636.pts-21.hostname      (Attached)

To detach an attached screen, enter:
  screen -D
If you have more than one attached screen, you can specify a particular screen to detach. For example, to detach the screen in the above example, you would enter:
  screen -D 1636.pts-21.hostname
giorgio79
fuente
0

Si eres inteligente como yo, estabas intentando reanudar una sesión de pantalla iniciada como rootcon la cuenta de usuario normal. Lo descubrí ls /var/run/screenmostrándome un directorio pararoot

uhFocuz
fuente
0

Ocasionalmente tengo el mismo problema (screen -r -d no se reanuda, no responde). Para solucionarlo, busque el terminal (tty / pty) asociado con la sesión de pantalla:

screen -list
There is a screen on:
    28176.pts-51.localhost        (Attached)
1 Socket in /tmp/uscreens/S-xxxx.

Encuentre el terminal listado (en este ejemplo pts-51):

ps axuw | grep 'pts/51'   # will vary depending upon how pty's are named
you     12293  0.0  0.2  2148 1128 pts/51   Ss   10:34   0:00 -bash

Elimine los procesos en ese terminal (generalmente su shell):

kill 12293

ejecute ps nuevamente para asegurarse de que se haya ido. Si no :

kill -9 12293

En mi servidor (gnu / linux), a veces tendré que matar -9 varias veces hasta que muera.

Después de que todos los procesos en ese tty hayan desaparecido, la pantalla debería reanudarse correctamente:

screen -r -d
tb303
fuente
-1

Eliminar pantallas muertas con screen -wipe.

Gerçek Karakuş
fuente
Creo que eso es exactamente lo contrario de lo que está tratando de hacer.
Chris S