¿Qué sucede con los procesos en ejecución cuando pierdo una conexión remota a una caja * nix?

16

Ocasionalmente pierdo mi conexión SSH remota a mi VPS. Lo uso screenpara procesos de larga duración, pero me pregunto qué pasará con los procesos que tuve que ejecutar aparte de los que se ejecutan dentro de una screensesión si pierdo la conexión a la caja.

Cuando restablezco una conexión a la caja, ¿qué pasó con los procesos bash y sshd que se estaban ejecutando cuando perdí la conexión? Hoy perdí la conexión repetidamente y noté muchos más procesos bash y sshd de lo habitual.

Si hay procesos dando vueltas, ¿necesito matarlos? ¿Cómo podría determinar qué procesos fueron abandonados de mi sesión anterior?

Gracias por cualquier respuesta!

David Marble
fuente

Respuestas:

8

Normalmente, los procesos finalizarán tras la desconexión, pero las antiguas sesiones SSH podrían estar esperando el tiempo de espera, o podrían haberse bloqueado al salir , debido a una condición de carrera.

Probablemente debería terminar las sesiones anteriores, aunque no necesariamente tiene que hacerlo. Escriba ps auxen la consola para enumerar los procesos, luego kill PIDpara cada sesión ssh bloqueada, donde PID es el PID (ID de proceso) para esa sesión. Las sesiones más antiguas y bloqueadas deben tener PID más bajos que su sesión actual nueva.

Si hay un proceso de larga duración que desea seguir ejecutando específicamente incluso después de desconectarse, puede anteponer su comando con nohup:

nohup badblocks -nvs /dev/sda &
robar
fuente
0

Cuando la sesión ssh muere, la pseudo-tty asociada se cierra y se reinicia. Por lo general, el shell y otros procesos asociados con ese tty se eliminan, ya que son procesos secundarios del proceso que lo creó. Si hay procesos dando vueltas, ¿tal vez se han retrasado? Sí, probablemente deberían ser asesinados: la limpieza está al lado de la piedad. Sí consumen algunos recursos, generalmente no mucho, pero pueden acumularse después de un tiempo.

Shannon Nelson
fuente