GNU/Linux >> Tutoriales Linux >  >> Linux

El comando Nohup en Linux le permite ejecutar comandos incluso después de cerrar sesión

Nohup significa "no colgar". Es un comando extremadamente útil para hacer que su proceso se ejecute incluso después de cerrar la sesión.

Uno de los usos más comunes se puede encontrar en la ejecución de comandos de toma de tiempo a través de una conexión SSH. Si cree que su sesión SSH puede caerse, puede usar el comando con nohup de esta manera:

nohup your_command &

¿Qué es el comando nohup?

Nohup puede verse como un envoltorio. Prefijas tu comando con nohup así:

nohup COMMAND ARGS ....

Nohup el propósito de interceptar y prevenir SIGHUP señales de llegar a COMMAND .

Cuando antecede su comando con nohup , la entrada se redirigirá desde un archivo ilegible ( nohup COMMAND ). En pocas palabras, no llame a un comando con nohup si necesita enviar información a ese comando. Cuando no te levantas un comando, debe poder ejecutarse sin supervisión.

Nohup primero intentará redirigir la salida a ./nohup.out o lo enviará a ~/nohup.out si es necesario. También puede decidir dónde redirigir la salida de esta manera:

nohup COMMANDS >/path/to/output/file

No hay mucho que decir sobre nohup , no tiene una larga lista de opciones. Solo hay –ayuda y –versión .

Ejemplo de uso del comando nohup

Ejecutar un script con nohup es tan simple como esto.

nohup ./nhp.sh

Tenga en cuenta que nohup no bifurcó el proceso a un segundo plano. Nohup solo está ahí para interceptar SIGHUP señales Una vez que se ejecuta el comando, puede continuar y cerrar su terminal. Le avisará que se está ejecutando un proceso. Confirma que quieres matarlo.

Cuando cerró su terminal, todos los procesos secundarios recibieron una señal SIGHUP. Nohup evitó que esa señal llegara a mi comando. La siguiente imagen muestra la información del proceso sobre mi comando mientras la terminal aún se estaba ejecutando.

¿Ves el PPID? Ese es el ID del proceso principal. Cuando solicitó cerrar la terminal, todos los hijos de PPID recibieron un SIGHUP señal. Nohup impidió que esa señal llegara a nuestro script. El proceso principal terminó y nuestro script quedó huérfano. Cuando un proceso queda huérfano, se le asigna automáticamente 1 (systemd o init) como padre.

Como puede ver, no es realmente difícil demostrar el uso de nohup . Comando muy simple. Puede bifurcar el proceso en segundo plano de esta manera:

nohup ./nhp.sh &

También puede decidir hacia dónde se redirigirá la salida así:

nohup ./nhp.sh >/path/to/file &

Tenga en cuenta que si apaga o reinicia el sistema Linux, eliminará el comando. Cuando solicita un apagado o reinicio, todos los procesos reciben un SIGTERM y luego un SIGKILL . Esas señales no son interceptadas por nohup .

Nohup a través de conexión SSH

Un uso que a menudo te viene a la mente cuando aprendes nohup es poder iniciar un proceso en un equipo remoto a través de SSH. Lógicamente, ejecutar un comando con nohup le permitiría cerrar la sesión de su conexión SSH y el proceso aún se ejecutaría.

nohup COMMAND &

Un problema común es que, a veces, SSH se "cuelga" al cerrar la sesión. Esto se debe a que SSH a menudo se niega a perder cualquier flujo de datos hacia y desde cualquier proceso en segundo plano. Luego se "colgará" hasta que finalice el proceso.

Este problema a menudo se puede solucionar redirigiendo los 3 flujos de datos.

nohup COMMAND >./nohup.out 2>./nohup.err &

Espero que este breve artículo te haya ayudado a utilizar mejor las sesiones SSH. Si tiene preguntas o sugerencias, deje un comentario a continuación.


Linux
  1. 10 usos asombrosos y misteriosos de (!) símbolo u operador en los comandos de Linux

  2. 10 comandos básicos de Linux que necesitas saber

  3. Comando de eco de Linux

  4. Ejemplos de comandos de Nohup:ejecuta un comando que continúa ejecutándose después de cerrar la sesión

  5. ¿Cómo usar nohup para continuar ejecutando un comando después de que el usuario cierre la sesión?

Cómo ejecutar múltiples comandos de Linux en un solo comando

3 comandos de Linux que has olvidado

Cómo ejecutar varios comandos de Linux a la vez en la terminal de Linux

20 comandos principales de Linux que necesitarás a diario

Comando Nohup en Linux

Los más de 50 comandos principales de Linux que DEBE conocer