Al salir del shell de un sistema Linux, todos los procesos en ejecución generalmente finalizan o cuelgan. Entonces, ¿qué haces si aún quieres que los procesos sigan ejecutándose incluso al salir del shell/terminal? Aquí es donde el comando nohup entra.
Comando Nohup
Nohup, abreviatura de no colgar, es un comando en los sistemas Linux que mantiene los procesos en ejecución incluso después de salir del shell o terminal.
Nohup evita que los procesos o trabajos reciban la señal SIGHUP (Signal Hang UP). Esta es una señal que se envía a un proceso al cerrar o salir de la terminal. En esta guía, echamos un vistazo al 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
Puede comenzar comprobando la versión de Nohup usando la siguiente sintaxis
nohup --version
Salida
Iniciar un proceso usando Nohup
Si desea mantener sus procesos/trabajos en ejecución, anteponga el comando con nohup
Como se muestra abajo. Los trabajos seguirán ejecutándose en el shell y no se eliminarán al salir del shell o terminal.
nohup ./hello.sh
Salida
Del resultado anterior, el resultado del comando se guardó en nohup.out
para verificar 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, ejecute
cat output.txt
Salida
Para redirigir a un archivo y a un error y salida estándar, utilice > filename 2>&1
atributo como se muestra
nohup ./hello.sh > myoutput.txt >2&1
Salida
Iniciar un proceso en segundo plano usando Nohup
Para iniciar un proceso en segundo plano, utilice &
símbolo al final del comando. En este ejemplo, hacemos ping a google.com y lo enviamos a segundo plano.
nohup ping google.com &
Salida
Para verificar el proceso al reanudar el shell, use pgrep
comando como se muestra
pgrep -a ping
Salida
Si desea detener o eliminar el proceso en ejecución, use kill
comando seguido del ID del proceso como se muestra
kill 2565
Salida
Resumen
- Todos los procesos que se ejecutan con el comando nohup ignorarán la señal SIGHUP incluso al salir del shell.
- Una vez que se inicia o ejecuta un trabajo con el comando nohup, stdin no estará disponible para el usuario.
- De forma predeterminada,
nohup.out
se utiliza como archivo predeterminado para stdout y stderr.