Al salir del shell de un sistema Linux, todos los procesos en ejecución suelen terminar o quedarse colgados. ¿Qué se puede hacer si se desea que los procesos sigan ejecutándose incluso al salir del shell o del terminal? Aquí es donde entra en juego el comando nohup .
Comando Nohup
Nohup, abreviatura de no hang up (no colgar), es un comando de los sistemas Linux que mantiene los procesos en ejecución incluso después de salir del shell o la terminal. Nohup impide que los procesos o trabajos reciban la señal SIGHUP (Signal Hang UP, señal de suspensión). Esta es una señal que se envía a un proceso al cerrar o salir de la terminal. En esta guía, analizamos el comando nohup y demostramos cómo se puede utilizar.
Sintaxis del comando Nohup
La sintaxis del comando Nohup es la siguiente:
nohup command arguments
O
nohup options
Veamos cómo entra en juego el comando.
Comprobando la versión de Nohup
Puedes comenzar verificando la versión de Nohup usando la sintaxis a continuación
nohup --version
Producción
Iniciar un proceso utilizando Nohup
Si desea mantener sus procesos o trabajos en ejecución, anteponga el comando con nohuplo que se muestra a continuación. Los trabajos seguirán ejecutándose en el shell y no se cerrarán al salir del shell o la terminal.
nohup ./hello.sh
Salida De la salida anterior, la salida del comando se ha guardado para nohup.outverificar esta ejecución.
cat nohup.out
Salida Además, puede optar por redirigir la salida a un archivo diferente como se muestra
nohup ./hello.sh output.txt
Una vez más, para ver el archivo ejecuta
cat output.txt
Salida Para redirigir a un archivo y al error estándar y salida, use el filename 21atributo como se muestra
nohup ./hello.sh myoutput.txt 21
Producción
Iniciar un proceso en segundo plano utilizando Nohup
Para iniciar un proceso en segundo plano, utilice el símbolo que se encuentra al final del comando. En este ejemplo, hacemos ping a google.com y lo enviamos al segundo plano.
nohup ping google.com
Salida Para comprobar el proceso al reanudar el shell, utilice el pgrepcomando como se muestra
pgrep -a ping
Salida Si desea detener o matar el proceso en ejecución, utilice el killcomando seguido del ID del proceso como se muestra
kill 2565
Producción
Resumen
- Todos los procesos que se ejecutan utilizando el comando nohup ignorarán la señal SIGHUP incluso al salir del shell.
- Una vez que se inicia o ejecuta un trabajo utilizando el comando nohup, stdin no estará disponible para el usuario.
- De forma predeterminada,
nohup.outse utiliza como archivo predeterminado para stdout y stderr.