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 --version
Finalizació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.