Cómo usar el comando nohup en Linux

27 feb 2021 2 min di lettura
Cómo usar el comando nohup en Linux
Indice dei contenuti

Introducción

nohup es un comando de los sistemas operativos Unix y tipo Unix, y más generalmente de los sistemas POSIX, que ejecuta otro comando haciendo que ignore la señal SIGHUP (hangup), para permitirle continuar la ejecución incluso en el caso de un desconexión del terminal o cerrar el emulador de terminal.

SIGHUP es una señal enviada a un proceso cuando su terminal de control está cerrada.

Normalmente, cuando ejecuta un comando a través de SSH si la conexión se pierde o se desconecta, la sesión SSH finaliza y todos los comandos ejecutados desde el terminal se terminan.

Servidor Nohup para evitar abortar comandos. Ignorará todas las señales de colgar y los comandos seguirán funcionando.

Cómo usar el comando nohup

La sintaxis del comando nohup es la siguiente:

nohup COMMAND [ARGS]

El comando no acepta otras opciones excepto el estándar --help y --version.

Echemos un vistazo al siguiente ejemplo:

nohup mycomand

Debería recibir un mensaje de salida similar al siguiente:

nohup: ignora input e aggiunge output a 'nohup.out'

nohup ejecutará el comando mycommand en primer plano y redirigirá la salida del comando al archivo nohup.out.

Este archivo se creará en el directorio de trabajo actual.

Si el usuario que ejecuta el comando no tiene permisos de escritura en el directorio de trabajo, el archivo se creará en el directorio de inicio del usuario.

Si cierra la terminal, el comando no terminará.

Ejecutando el comando en segundo plano

Usar nohup en primer plano no es muy útil, ya que no podrá interactuar con el shell hasta que se complete el comando.

Para ejecutar nohup en segundo plano, agregue el símbolo & al final del comando:

nohup mycomand &

Cuando ejecuta el comando en segundo plano, el ID del proceso de shell (entre paréntesis) y el ID del proceso se imprimirán en la terminal: Debería recibir un mensaje de salida similar al siguiente:

[1] 13265

Si por alguna razón desea finalizar el proceso, utilice el comando kill seguido del ID del proceso:

kill -9 13265

Redirigir la salida a un archivo

De forma predeterminada, nohup redirige la salida al archivo nohup.out. Si desea redirigir la salida del comando a un archivo diferente, puede usar la redirección de shell estándar.

Por ejemplo, para redirigir la salida estándar y el error estándar al archivo mycommand.out usaremos:

nohup mycommand > mycommand.out 2>&1 &

Para redirigir la salida estándar y el error estándar a diferentes archivos:

nohup mycommand > mycommand.out 2> mycommand.err &

Alternativas

Hay una serie de programas alternativos que puede utilizar para evitar cerrar un comando cuando cierra la terminal o cierra la sesión.

Pantalla Screen o GNU Screen es un programa multiplexor de terminal que le permite iniciar una sesión de pantalla y abrir cualquier número de ventanas (terminales virtuales) dentro de esa sesión.

Los procesos que se ejecutan en la pantalla continuarán ejecutándose cuando su ventana no sea visible, incluso si cierra la sesión.

Para obtener más información: Cómo utilizar el comando Pantalla para sesiones en Linux.

Tmux Tmux es una alternativa moderna a la pantalla GNU. Con Tmux también puede crear una sesión y abrir múltiples ventanas dentro de esa sesión. Las sesiones de Tmux son persistentes, lo que significa que los programas que se ejecutan en Tmux seguirán ejecutándose incluso si cierra la terminal.

Renegar de disown es un shell incorporado que elimina un trabajo de shell del control del trabajo de shell. A diferencia de nohup, también puede usar Disown en procesos en ejecución.

Conclusión

A estas alturas, debería tener una buena comprensión de cómo usar el comando nohup para evitar que los comandos se terminen cuando cierre la sesión o cierre la sesión del terminal.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.