2011-08-25 11 views
5

¿Cómo se puede asegurar cuando genero un proceso en una máquina remota usando Python Paramiko, que el proceso morirá cuando la conexión lo haga?¿Cómo me aseguro de que todos los procesos generados mueran cuando elimino un script de Python Paramiko?

Específicamente, el problema que estoy teniendo es que ejecutaré wget u otro comando usando Paramiko, y se bloqueará. Lamentablemente, cuando elimino el proceso de script de python directamente, el proceso en la máquina remota no se apaga. Simplemente sigue funcionando y tengo otro proceso de suspensión.

Tengo que matar el proceso directamente porque estoy tratando de vincularlo con una herramienta que solo puede matar procesos directamente.

He oído que esto se puede hacer en SSH haciendo de SSH un "Terminal de control". ¿Hay algo en Paramiko que pueda hacer esto, o simplemente matar cualquier proceso en una máquina remota después de que se generó?

Gracias!

+0

cuando finaliza la conexión ssh, el comando stdin del comando remoto llega a EOF. No todos los comandos verifican esta condición y continúan ejecutándose en este caso. Sin embargo, me sorprende que este sea un problema para wget (a menos que esté descargando archivos de gran tamaño). –

Respuesta

2

Necesita asignar un psedo-tty para que cuando se cierre la conexión, SIGHUP se envíe a procesos secundarios. Los procesos de buen comportamiento saldrán en SIGHUP. Consulte esta respuesta sobre la configuración de un pseudo-tty: Paramiko and Pseudo-tty Allocation

Cuestiones relacionadas