Inicio > Gestión de procesos > nohup

nohup: Continuar ejecutando después de cerrar sesión

Una herramienta que permite que un comando siga ejecutándose incluso si el terminal se cierra o la conexión SSH se interrumpe. Es esencial para ejecutar tareas de larga duración (como iniciar un servidor, descargar archivos grandes, ejecutar trabajos por lotes, etc.) en segundo plano.

¿Qué es nohup?

nohup es la abreviatura de 'No Hang Up', lo que significa que ejecuta un comando ignorando la señal de interrupción (señal HUP). Normalmente, al cerrar una ventana de terminal, los programas en ejecución también finalizan, pero nohup actúa como un escudo para evitarlo.

3 conceptos clave

  • Ignorar la señal HUP: Ignora la señal de terminación (SIGHUP) enviada por el sistema cuando el usuario cierra sesión, manteniendo el proceso vivo.
  • nohup.out: Si no se especifica un archivo para guardar, los resultados de la ejecución (contenido de salida) se guardan automáticamente en el archivo `nohup.out`.
  • & (Segundo plano): nohup por sí solo ocupa el terminal. Normalmente, se añade `&` al final del comando para enviarlo al segundo plano.

Sintaxis y opciones principales (Shell)

nohup no tiene opciones complejas por sí mismo. En su lugar, se utiliza en combinación con el **comando a ejecutar** y la **redirección (especificación de la dirección de salida)**.

1. Configuración de ejecución básica

2. Gestión de logs (salida)

3. Ayuda

Comando generado:

Combina los comandos.

Descripción:

`nohup` Ejecutando el comando.

Combina las opciones anteriores para ejecutar virtualmente los comandos junto con la IA.

Ejemplos de escenarios de uso

Los patrones de nohup más utilizados en la práctica.

Uso más básico

nohup ./backup.sh &

Ejecuta un script en segundo plano. La salida se acumula en `nohup.out`.

Especificar nombre de archivo de log (recomendado)

nohup python3 app.py > my-app.log 2>&1 &

Guarda los logs en `my-app.log` en lugar de `nohup.out`. `2>&1` significa que los mensajes de error también se guardarán en el mismo archivo.

Ejecutar sin logs

nohup ./heavy-task.sh > /dev/null 2>&1 &

Cuando no se necesita la salida o es demasiado voluminosa y hay riesgo de llenar el disco, se redirige la salida a `/dev/null`.

Encontrar procesos nohup en ejecución

ps -ef | grep app.py

Verifica los procesos en ejecución con el comando `ps`.

Instalación

nohup es un comando básico incluido en 'GNU Coreutils' y ya está instalado en casi todas las distribuciones de Linux.

Verificar instalación

En la mayoría de los casos, no se necesita una instalación separada. Puede verificar si está instalado con el siguiente comando.

Verificar versión

nohup --version

Consejos y advertencias

Consejos útiles

  • ¿Qué pasa con las tareas ya en ejecución?: Si olvidaste usar nohup y ejecutaste un comando, puedes detenerlo con `Ctrl+z`, enviarlo a segundo plano con `bg` y luego usar `disown -h %1` para obtener el efecto de nohup.
  • Cómo terminar: Los procesos iniciados con nohup no se detienen con `Ctrl+c`. Debes encontrar el PID (ID de proceso) con `ps -ef | grep [nombre]` y luego terminarlo con `kill -9 [PID]`.
  • Cuidado con el espacio en disco: Si un programa de larga duración sigue escribiendo logs en `nohup.out`, el archivo puede volverse enorme y detener el servidor. Vacíalo periódicamente o usa `/dev/null`.

comandos relacionados

Son comandos que son funcionalmente similares o que se usan juntos con frecuencia.



Comandos de la misma categoría