Esta cuestión ha llegado bastante un montón ( realmente mucho ), pero estoy encontrando las respuestas sean generalmente incompleta. La pregunta general es "¿Por qué mi trabajo es / no es asesinado cuando salgo / mato ssh?", Y esto es lo que he encontrado. La primera pregunta es: ¿Qué tan general es la siguiente información? Lo siguiente parece ser cierto para el Linux Debian moderno, pero me faltan algunos bits; ¿Y qué necesitan saber los demás?
Todos los procesos secundarios, en segundo plano o no, de un shell abierto sobre una conexión ssh se eliminan con SIGHUP cuando la conexión ssh se cierra solo si
huponexit
se establece la opción: ejecutarshopt huponexit
para ver si esto es cierto.Si
huponexit
es cierto, puede usarnohup
odisown
disociar el proceso del shell para que no se mate cuando salga. O, corre las cosas conscreen
.Si
huponexit
es falso, que es el valor predeterminado en al menos algunos Linux en estos días, los trabajos en segundo plano no se eliminarán en el cierre de sesión normal.Pero incluso si
huponexit
es falso, entonces si la conexión ssh se corta o se cae (diferente a la desconexión normal), los procesos en segundo plano seguirán siendo eliminados. Esto se puede evitar condisown
onohup
como en (2).Hay alguna distinción entre (a) procesos cuyo proceso padre es el terminal y (b) procesos que tienen stdin, stdout o stderr conectados al terminal . No sé qué sucede con los procesos que son (a) y no (b), o viceversa.
Pregunta final: ¿Cómo puedo evitar el comportamiento (3)? En otras palabras, de forma predeterminada en Debian, los procesos en segundo plano se ejecutan alegremente por sí mismos después de cerrar la sesión, pero no después de que se corte la conexión ssh. Me gustaría que ocurriera lo mismo con los procesos independientemente de si la conexión se cerró normalmente o se cortó. ¿O es una mala idea?
Editar: Otra forma importante de mantener los trabajos de ser asesinado, que funciona (?) En ambos casos es ejecutarlos a través de la pantalla . Pero, la pregunta es más acerca de comprender cuándo se matan las cosas y cuándo no: a veces las personas quieren que los trabajos se maten al cerrar sesión, por ejemplo.
Más hilos: - Aclaración de señales (sighup), trabajos y el terminal de control - /server/117152/do-background-processes-get-a-sighup-when-logging-off - Continuar SSH Tarea en segundo plano / trabajos al cerrar SSH : ¿continuará ejecutándose un trabajo en segundo plano después de cerrar una sesión SSH? - Evite que un proceso en segundo plano que ya se está ejecutando se detenga después de cerrar el cliente SSH - ¿Cómo puedo iniciar un proceso a través de SSH para que continúe ejecutándose después de desconectarme? - No se puede mantener el trabajo remoto ejecutándose en OS X - Cerrar la conexión SSH