Comandos LinuxExplicados en español
/
Ficha50 / 104
Categoría
Procesos
Ejemplos
5
Ver también
ps · kill · pkill

nohup

no hangup (no colgar)

Corre un comando y sigue corriendo aunque cierres la terminal.

Sirve para que un proceso siga funcionando cuando cierras la sesión de terminal (SIGHUP). Lo usas para dejar corriendo un script, servidor o descarga por largo tiempo sin quedarte conectado.

Sintaxisnohup COMANDO [ARG]...
§ 1

Despiece

5 ejemplos
Dejar corriendo un script en segundo plano

Dejar corriendo un script en segundo plano

3 piezas
Lámina01 / 05
Comandonohup ./script.sh &
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1nohupComandoIgnora la señal de cierre de terminal (SIGHUP).
2./script.shArgumentoEl script que quieres dejar corriendo.
3&OperadorLo manda a segundo plano.
Resultado

El script sigue corriendo aunque cierres la terminal. La salida va a nohup.out en la carpeta actual (o en $HOME si no puedes escribir ahí).

Guardar la salida en otro archivo

7 piezas
Lámina02 / 05
Comandonohup python3 app.py > logs.txt 2>&1 &
Piezas7
Escala1:1
N.ºPiezaTipoQué hace
1nohupComandoIgnora el cierre de terminal.
2python3ComandoIntérprete de Python.
3app.pyArgumentoAplicación a correr.
4>OperadorRedirige la salida estándar al archivo.
5logs.txtArgumentoArchivo donde se guarda la salida.
62>&1OperadorRedirige errores (stderr) a la salida estándar.
7&OperadorLo manda a segundo plano.
Resultado

La aplicación corre aunque cierres la terminal y toda la salida (normal y errores) queda en logs.txt.

Correr una descarga larga

4 piezas
Lámina03 / 05
Comandonohup wget https://ejemplo.com/archivo.iso &
Piezas4
Escala1:1
N.ºPiezaTipoQué hace
1nohupComandoProtege el proceso si cierras la terminal.
2wgetComandoDescarga el archivo.
3https://ejemplo.com/archivo.isoArgumentoURL del archivo a descargar.
4&OperadorLo manda a segundo plano.
Resultado

wget sigue descargando aunque te desconectes de SSH. El avance va a nohup.out.

Correr un comando y ver su PID

6 piezas
Lámina04 / 05
Comandonohup sleep 3600 & echo $!
Piezas6
Escala1:1
N.ºPiezaTipoQué hace
1nohupComandoProtege el proceso.
2sleepComandoEspera el tiempo indicado.
33600Valor3600 segundos (1 hora).
4&OperadorManda a segundo plano.
5echoComandoMuestra texto en pantalla.
6$!ValorMuestra el PID del proceso que acabas de mandar a segundo plano.
Resultado

Te aparece el PID (por ejemplo 12345). Así lo revisas después con ps o lo detienes con kill 12345.

Redirigir solo errores a un archivo

7 piezas
Lámina05 / 05
Comandonohup ./app > /dev/null 2> errores.log &
Piezas7
Escala1:1
N.ºPiezaTipoQué hace
1nohupComandoIgnora cierre de terminal.
2./appArgumentoAplicación a correr.
3>OperadorRedirige salida estándar.
4/dev/nullArgumentoDescarta la salida normal.
52>OperadorRedirige errores (stderr) a archivo.
6errores.logArgumentoArchivo donde van solo los errores.
7&OperadorSegundo plano.
Resultado

La app corre aunque cierres la terminal, no ves salida normal y solo los errores van a errores.log.

§ 2

Fallas comunes

FallaRemedio
Olvidar el & y quedarte esperando.Agrega & al final para mandarlo a segundo plano. También puedes pausar (Ctrl+Z) y luego ponerlo a correr con bg.
Pensar que nohup evita que lo maten.nohup solo evita que SIGHUP lo cierre al cerrar la terminal. SÍ lo puedes matar con kill o pkill.
Buscar salida y no encontrarla.Por defecto va a nohup.out en el directorio actual. Si no pudo escribir ahí, va a $HOME/nohup.out. Revisa ahí.
Encerrar todo el comando entre comillas o usar pipes directamente.nohup recibe el comando y sus argumentos por separado: nohup python3 script.py --modo prod &. Si pones todo entre comillas, busca un programa con ese nombre completo y falla. Para pipes o varios comandos usa una shell: nohup sh -c 'comando1 | comando2' &.
§ 3

Preguntas frecuentes

¿Para qué sirve nohup?
Para que un comando siga corriendo aunque cierres la terminal o pierdas la conexión SSH. Ignora la señal SIGHUP (hangup).
¿Dónde guarda la salida nohup?
Si la salida es a terminal, la añade a nohup.out en la carpeta actual. Si no puede escribir ahí, la añade a $HOME/nohup.out. Puedes redirigirla a otro archivo con > archivo.
¿Cuál es la diferencia entre nohup y &?
& manda el proceso a segundo plano, pero si cierras la terminal, muchos shells envían SIGHUP y lo matan. nohup evita ese cierre; lo común es usar ambos: nohup comando &.
¿Cómo detengo un proceso que corrí con nohup?
Buscas su PID con ps aux | grep nombre o con jobs si sigue en tu sesión, y lo matas con kill PID (o pkill por nombre). nohup no lo protege contra kill.
¿Necesito sudo para usar nohup?
No, funciona para tu propio usuario. Solo necesitas permisos para correr el comando que pasas a nohup.
§ 4

Ver también