Anteriormente me he vuelto a conectar a una sesión de pantalla de larga duración con screen -dr control
. Sin embargo, a veces este comando no se volverá a conectar a la pantalla y en su lugar se bloqueará para siempre (más de 10 minutos después de lo cual aborté). Esto solo ocurre cuando la conexión SSH se cae inesperadamente y no cuando la pantalla se desconecta correctamente Ctrl-A d
. Otros interruptores, como screen -x
o screen -D -RR
que tampoco funcionan.
Esta publicación sugiere eliminar el PTY que contiene la sesión de pantalla, lo que hará que la pantalla complete su desconexión. Sin embargo, simplemente mata el shell desde el que screen -dr control
se llamó.
Por ejemplo:
$ ps -ef | grep control | grep -v grep
nomad 7387 7109 0 13:05 pts/50 00:00:00 screen -dr control
nomad 15299 1 0 Nov27 ? 00:13:47 SCREEN -S control
$ ps -ef | grep bash | grep 'pts/50'
nomad 7109 7108 0 12:49 pts/50 00:00:00 -bash
La publicación vinculada sugiere matar el bash
proceso con PID 7109. Esto también matará el screen -dr control
proceso con PID 7387. Después, todavía no puedo conectarme a la pantalla.
El proceso SCREEN -S control
que inició la sesión de pantalla tiene init
como padre el que obviamente no puedo matar.
¿Hay alguna manera de volver a adjuntar a la sesión de pantalla bloqueada?
Actualización: Esto sucede en CentOS 6.4 usando el kernel 2.6.32-358.6.1.el6.x86_64. Todos los shells son bash versión 4.1.2 (1) -release.
screen -ls
dice en esos casos "colgantes"?screen -d -r <session>
significa "separar y recuperar", por lo que no haberlo separado de primera mano no debería importar. (Y por hacerlo a menudo, no ...)