Búsqueda de sitios web

¿Cómo redirijo la salida de Nohup a un archivo?


No hangup, comúnmente llamado nohup, es una utilidad de Linux que permite que los procesos continúen ejecutándose en segundo plano, incluso después de eliminar o finalizar una sesión de shell.

Los comandos nohup aceptan un comando o un ejecutable como argumento. Una vez que ejecuta un comando con nohup, ignora las señales de colgado (SIGHUP), lo que ayuda a mantener un proceso en ejecución después de cerrar la sesión de shell.

Por ejemplo, si ejecuta un comando sobre SSH, todos los procesos iniciados en la sesión de SSH se cerrarán una vez que la sesión de SSH finalice. Puede evitar que esto suceda usando un multiplexor de terminal como tmux o screen o usando nohup.

Cómo usar el comando nohup

Para usar nohup, pasamos el comando como argumento. La sintaxis general del comando es:

nohup [command] [ARGS]

Cómo ejecutar un comando con nohup

Para ejecutar un comando, como un ping, con nohup, use el comando:

nohup ping linux-console.net > /dev/null

Una vez que ejecute el comando con nohup, debería obtener un resultado como:

nohup: ignoring input and redirecting stderr to stdout

De forma predeterminada, nohup ejecuta un proceso en primer plano mientras redirige la salida al archivo nohup.out. El archivo se encuentra en el directorio de trabajo actual a menos que el usuario no tenga permisos de escritura en ese directorio. En ese caso, el archivo nohup.out se crea en el directorio de inicio del usuario.

Para ver el contenido del archivo nohup.out, use el comando cat como:

cat nohup.txt

Cómo usar Nohup con procesos en segundo plano

Ejecutar un proceso en segundo plano es la forma más efectiva de usar el comando nohup. Ejecutar un proceso en segundo plano con nohup le permite cerrar el proceso principal (shell) sin eliminar su proceso.

Para hacer esto, use el ampersand después del comando como:

nohup sleep 300 &

Una vez que ejecute el comando anterior, el shell iniciará el comando de suspensión en segundo plano y adjuntará el SIGHUP ignorado al proceso.

Para ver los procesos en segundo plano, use el comando jobs -l.

Cómo redirigir la salida de nohup a un archivo

Si no especifica el archivo de salida, nohup redirige la salida a un archivo nohup.out. Puede anular esto usando los símbolos de redirección.

Por ejemplo, para redirigir la salida del comando ping a ping.out, use el comando:

nohup ping linux-console.net > ping.out 2>&1 &

Agregar los descriptores de archivo 1 y 2 habilita la salida estándar y el error estándar redirige al archivo ping.out.

También puede elegir diferentes archivos para la salida estándar y el error estándar. Como:

nohup ping linux-console.net 1> ping.out 2> ping.err &

Conclusión

Podemos usar el comando nohup para evitar que un proceso finalice una vez que finaliza el proceso principal. Usando parámetros de redirección, también podemos redirigir la salida de nohup a un archivo personalizado.

Artículos relacionados: