El comando nohup (abreviatura de “no hang up”) en Unix/Linux permite ejecutar un comando de manera que continúe corriendo incluso después de cerrar la sesión o desconectar el terminal, ignorando la señal SIGHUP (que normalmente termina los procesos en estas situaciones). Si la salida estándar (stdout) del comando es un terminal, tanto esta como la salida de errores estándar (stderr) se redirigen al archivo nohup.out en el directorio actual. Si no es posible escribir en ese archivo, se intenta redirigir a $HOME/nohup.out. En caso de que ninguna de estas opciones sea viable, el comando no se ejecuta.
Al crear los archivos nohup.out o $HOME/nohup.out, nohup les asigna permisos exclusivos para el propietario (el grupo y otros usuarios no tienen acceso). Si estos archivos ya existen, sus permisos no se modifican.
Uso del comando nohup
Cuando un comando o tarea requiere mucho tiempo y no se sabe cuándo terminará, es útil ejecutarlo en segundo plano. Sin embargo, al cerrar la sesión, todos los procesos (excepto los iniciados con at o batch) se terminan. El comando nohup permite que el proceso siga ejecutándose en segundo plano. La sintaxis básica es:
nohup comando [argumentos] &- comando: Nombre del script o comando a ejecutar.
- argumentos: Argumentos opcionales para el comando o script.
- &: Ejecuta el comando en segundo plano.
Ejemplos prácticos
A continuación, se presentan ejemplos ilustrativos del uso de nohup:
- Buscar la palabra “ddos” en todos los archivos del directorio actual y guardar los resultados en un archivo:
nohup grep ddos * > /home/captain/ddos.txt &- Buscar la palabra “admin” en los registros de acceso de Nginx y guardar los resultados:
nohup cat /var/log/nginx/access.log | grep "admin" > /home/captain/bruteforce.txt &- Verificar los procesos en ejecución:
ps aux | grep nohup- Iniciar el servidor Nginx en segundo plano, descartando la salida:
nohup service nginx start > /dev/null 2>&1 &- Buscar todos los archivos con el bit de setuid en el sistema y guardar los resultados:
nohup find / -xdev -type f -perm -u=s -print > /home/output.txt &- Ejecutar un comando con una prioridad ajustada usando nice:
nohup nice -n -5 ls / > /home/some_output.txt &Nota: El comando nohup no modifica la prioridad del proceso; para ello, utiliza nice.
Opciones del comando nohup
- Mostrar la ayuda:
nohup --help- Mostrar la versión:
nohup --versionFinalización de procesos
Para terminar un proceso iniciado con nohup, usa el comando kill seguido del ID del proceso (obtenido con ps aux | grep nohup).
Conclusión
Con esto concluye el artículo sobre el comando nohup en Unix/Linux. Este comando es una herramienta poderosa para ejecutar procesos en segundo plano sin interrupciones, ideal para tareas de larga duración o scripts que deben persistir tras cerrar la sesión.
¿Qué te parece?
Es bueno conocer tu opinión. Deja un comentario.