¿Qué es Nohup?
Nohup es la abreviatura de «No Hangups». No es una orden que se ejecuta por sí misma. Nohup es un comando suplementario que le dice al sistema Linux que no detenga otro comando una vez que se haya iniciado. Esto significa que seguirá funcionando hasta que lo haga, incluso si el usuario que lo inició cierra la sesión. La sintaxis de nohup es simple y se parece a ésta:
nohup sh your-script.sh &
Fíjate en el «&» al final de la orden. Esto mueve el comando al segundo plano, liberando el terminal en el que está trabajando.
Nohup funciona con casi cualquier comando que se ejecute en la terminal. Se puede ejecutar con scripts personalizados, así como con comandos estándar del sistema y utilidades de línea de comandos.
Nohup.out
Debido a que nohup puede seguir funcionando independientemente del usuario que lo inició, el comando necesita un lugar para producir cualquier mensaje o error. Como no hay un terminal para asociar con él, nohup registra todo en un archivo de salida, nohup.out.
Por defecto, ese archivo se encuentra en cualquier directorio en el que haya iniciado el comando. Nohup.out es algo único porque contiene tanto la salida estándar como la salida de error juntas. Nohup redirecciona ambos al mismo archivo por defecto.
Sin embargo, no es necesario que uses nohup.out. Es sólo el valor predeterminado. Puede especificar una salida personalizada cuando ejecute nohup y colocarla en una ubicación personalizada.
nohup sh your-script.sh> /path/to/custom.out &
La salida personalizada contiene exactamente los mismos datos que el archivo nohup.out estándar.
Diferencias con Daemons
En este punto, usted probablemente se esté preguntando qué es lo que diferencia a nohup de un proceso demonizado. Después de todo, ambos parecen servir para el mismo propósito, pero en realidad no lo hacen. Los demonios se ejecutan continuamente en segundo plano. Es mejor reservarlas para procesos que no quieres que salgan nunca, como los servidores. También requieren más trabajo de programación, por lo que no son los mejores para guiones únicos y sencillos.
Nohup es para un solo uso. Piense en un guión que tardará mucho tiempo en ejecutarse, pero que al final terminará. Tal vez hay una tarea larga y complicada que se ejecuta de vez en cuando y que lleva horas completar. No quieres dejar un terminal abierto o un usuario conectado, así que usas nohup para mantenerlo funcionando en segundo plano. Como ventaja adicional, registrará automáticamente todo para usted.
Puede ver que nohup no es una herramienta cotidiana, pero puede ser muy útil para la tarea correcta. Se sitúa entre un script corto normal y un demonio que se ejecuta continuamente. Le ayuda a tomar más de un enfoque de no intervención para guiones más largos que usted podría haber perdido tiempo regularmente cuidando niños.