Screen
comprueba el fifo / socket cada vez que recibe un SIGCHLD
señal. Si falta el zócalo, será recreado. Entonces la solución es encontrar el proceso y enviarlo. SIGCHLD
.
En mi sistema Debian, screen
Parece que se instala como setgid utmp
pero no setuid, por lo que la primera solución de las preguntas frecuentes a continuación funcionó:
$ kill -CHLD 30860
$ ls /var/run/screen/S-username/
30860.pts-4.localhost
En sistemas donde se instala la pantalla setuid. root
, esto no funcionará, y deberá matar uno de los procesos secundarios de la sesión de pantalla activa para forzar al kernel a enviar la señal por usted. Esto significa sacrificar una de las ventanas de su pantalla para reconectarse con el resto (¡elija sabiamente!).
Desde un Preguntas frecuentes archivadas de Gentoo Wiki :
Falta el zócalo
A veces se puede destruir el zócalo de una pantalla en ejecución,
aunque el proceso real y todos sus procesos secundarios todavía están
corriendo. pantalla-lista mostrará "No se encontraron sockets en / tmp / uscreens / .."
Algunas instrucciones útiles sobre cómo recuperarse de esto (y algunas
otros problemas poco comunes) en http://www4.informatik.uni-erlangen.de/~jnweiger/screen-faq.html#MISC alrededor de 2/3 del camino hacia abajo.
Q: Por alguna razón desconocida, el fifo en / tmp / screens / S-myname se ha ido,
y no puedo reanudar mi sesión de pantalla. ¿Hay alguna manera de recrear el fifo?
UNA: La pantalla comprueba el fifo / socket cada vez que recibe una señal SIGCHLD.
Si falta, se recrea el fifo / socket entonces.
Si la pantalla se está ejecutando no set-uid el usuario puede emitir un kill -CHLD screenpid
directamente (es -CHILD
en algunos
sistemas). Screenpid es el identificador de proceso del proceso de pantalla encontrado
en un ps -x
listado.
Pero normalmente esto no funcionará, ya que la pantalla debe instalarse setuid root.
En este caso no podrá enviar una señal, pero el kernel
será. Lo hace, siempre que un niño de pantalla cambie su estado. Encontrar
el id de proceso (shellpid a continuación) del shell "menos importante" en ejecución
dentro de la pantalla El intento kill -STOP shellpid
. Si el fifo / socket
No reaparece, destruye el proceso de shell. Sacrificas una cáscara para salvar.
el resto. Si nada funciona, no olvides eliminar todos los procesos.
corriendo en la sesión de pantalla perdida.