Las sesiones de pantalla se eliminan pero los procesos aún se mantienen activos y se ejecutan

Las sesiones de pantalla se eliminan pero los procesos aún se mantienen activos y se ejecutan

Esta es una situación extraña con la que me he topado. Tenemos un servidor de prueba fuera del sitio (o fuera del sitio donde trabajo). Para acceder al servidor, necesito una VPN en su red.

Ejecuté la pantalla para ejecutar un proceso de larga duración. Después de comenzar el proceso, hice lo siguiente para verificar la viabilidad de la pantalla:

  1. Me despegué de la sesión
  2. pantalla realizada -ls para verificar el PID
  3. ps -ef | pantalla grep
  4. pantalla -r PID

Pude ver que había una sesión de pantalla después de ejecutar estos comandos y volver a conectar/desconectar la sesión.

Aquí está la parte rara. Vuelvo al día siguiente y no hay sesiones de pantalla. Ejecuté esos cmds anteriores para verificar pero no hay nada. Sin embargo, mi proceso todavía está en ejecución. No utilicé nohup para ejecutar mi proceso pero, por alguna razón afortunada, mi proceso no murió con la sesión.

¿Alguien sabe qué pudo haber pasado? ¿Por qué perdí mi sesión de pantalla y por qué tuve suerte y mi proceso siguió ejecutándose?

Gracias por cualquier iluminación. =)

Respuesta1

Es posible que desee buscar para SCREENverificar que su pantalla realmente no se esté ejecutando.

Algunos sistemas tienen limpiadores tmp que eliminan archivos en /tmp, /var/tmp, /var/runo similares. Esto puede provocar que screenno pueda encontrar sus archivos de socket. Si puede identificar el PID de su sesión, puede kill -CHLD <PID>indicarle screenque reescriba su archivo de socket. screen -rEntonces debería funcionar de nuevo.

Si esto es lo que sucede, probablemente debería configurarlo screenpara usar otro directorio para sus sockets.

Respuesta2

Esto nos volvió a pasar a mí y a mi compañero de trabajo recientemente y él propuso esto como una posible razón por la cual sucedió. Él cree que debido a que la compañía agota el tiempo de nuestra conexión, la pantalla se apaga.

Teníamos varias sesiones de pantalla ejecutándose, cada una con su propio trabajo de larga duración (para simplificar, las llamaremos sesión A y B). El trabajo en la sesión A terminó antes y esa sesión volvió al indicador. Cuando transcurrió el período de tiempo de espera debido a inactividad, nos desconectó de la sesión A. La sesión B todavía está ejecutando su trabajo cuando esto sucedió, pero creemos que cuando el proceso principal muere (en este caso, la pantalla), se lleva todas las sesiones.

El proceso que se estaba ejecutando en la sesión B ahora lo hereda el padre de la pantalla, que es el proceso de inicio o proceso 1 y, por lo tanto, continúa ejecutándose cuando verificamos a la mañana siguiente.

Esta hipótesis fue respaldada en cierto modo mediante la realización de un experimento. Esto se ejecutó en Centos. Empezamos la pantalla y abrimos dos sesiones. En una sesión ejecutamos periódicamente un cmd para mantenerlo vivo. Al otro lo ignoramos. Después de unos 10 minutos, la pantalla terminó y con ella, ambas sesiones que abrimos.

información relacionada