Estoy ssh
ing en un servidor y estoy empezando un script en Python que va a tomar aprox. 24 horas para completar. ¿Qué pasa si mi conexión a internet se corta en el medio? ¿Eso detendrá el comando?
¿Hay alguna forma de ejecutar mi comando de ejecución prolongada de manera que las desconexiones locales no lo afecten y pueda continuar viendo su salida después de iniciar sesión ssh
nuevamente?
screen -r
lo reconectará.También puede usar
disown
si ya ha comenzado el proceso sinscreen
onohup
fuente
Las respuestas existentes pueden funcionar bien, pero necesitaba algo para BusyBox (un shell y un conjunto de herramientas para hardware mínimo como enrutadores domésticos). Mi sistema no tiene
screen
,dtach
,at
,disown
, o inclusonohup
! Así que gracias a tbc0 en SO ( enlace ), encontré esta joya. Regresa inmediatamente pero el proceso del servidor continúa ejecutándose:O, si se necesitan múltiples comandos:
Explicación:
>&-
- cierre manija stdout2>&-
- cerrar stderr<&-
- cerrar stdin&
- poner el proceso en segundo planoEsto no utiliza programas externos y debería funcionar en ksh, ash, Bourne shell, bash, etc.
fuente
Si crea un proceso en segundo plano y cierra su sesión, el proceso será adoptado por init (PID 1).
Si tengo una sesión y hago:
y abra otra sesión y ejecute:
Mi proceso todavía se está ejecutando, y vemos que su proceso padre ahora es 1 (init).
Alternativamente, puede configurar su script como lo haría con un demonio. Una búsqueda rápida muestra este enlace aparentemente útil: http://onlamp.com/python/pythoncook2/solution.csp?day=1 . Si quisieras tomar ese enfoque.
fuente