¿Salir de ssh y todavía tienes un comando ejecutándose?

¿Salir de ssh y todavía tienes un comando ejecutándose?

Estoy ejecutando un comando en un servidor. Viene con esta biblioteca.http://www.graphicsmagick.org/.

Básicamente tengo un bucle for que procesa imágenes en muchos archivos.

El comando se ejecuta durante horas y se ejecutará durante horas. Me pregunto: ¿puedo salir de ssh y seguir ejecutando esos comandos en una máquina remota? ¿Salir de ssh envía alguna señal para finalizar la ejecución del comando actual?

La otra cosa que noté... Aunque estoy ejecutando el comando de forma remota, mi computadora portátil se está sobrecalentando. El monitor de actividad muestra que bash está usando el 70% de la CPU. estoy en macbook pro

Ahora esto es extraño. ¿Cómo puede el comando remoto causar tensión en la máquina local?

Respuesta1

Una solución es anteponer el comando con nohup. Esto le dice a la computadora que ignore las señales de "colgado" (como salir de una sesión ssh). Esto PUEDE NO FUNCIONAR con forbucles.

Otra buena solución (y mi forma favorita de hacerlo) es instalar el paquete 'pantalla'. screenproporciona una terminal virtual de la que se puede desconectar, dejando los procesos en ejecución presionando CTRL + A , D. Luego se puede volver a conectar la pantalla más tarde con screen -r.

Respuesta2

Cuando sale un líder de sesión con terminal de control asociado ( bash, en su caso), el sistema operativo envía SIGHUP a todos los procesos en el grupo de procesos de primer plano (trabajo de primer plano). Además, bashenvía por defecto el SIGHUP a todos sus trabajos, en ejecución o detenidos (los trabajos detenidos también se envían SIGCONT). Ahora la acción predeterminada al recibir SIGHUP es la finalización del proceso.

Existen entonces varios enfoques para permitir que el proceso se ejecute después de bashlas salidas. Primero, puedes hacer que tu proceso sea inmune a SIGHUP; esto es lo que nohuphace el comando. En segundo lugar, puede poner en segundo plano el grupo de procesos correspondiente e indicarle bashque no le envíe SIGHUP; para esto disownse utiliza el shell incorporado (tenga en cuenta también que hay una huponexitopción de shell, que hace que SIGHUP se envíe a todos los trabajos cuando se cierra un shell de inicio de sesión interactivo).

Si desea volver a conectar una terminal al grupo de procesos después de iniciar sesión nuevamente, es posible que desee utilizar un contenedor capaz de hacerlo; multiplexores de terminales como los que screentienen esta funcionalidad.

información relacionada