Introducción
nohup es un comando de los sistemas operativos Unix y tipo Unix, y más en general de los sistemas POSIX, que ejecuta otro comando haciéndolo ignorar la señal SIGHUP (hangup), para permitirle continuar la ejecución incluso en caso de una desconexión desde la terminal, o cerrando 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 se termina y todos los comandos ejecutados por el terminal se terminan.
todas las señales y comandos hangup todavía trabajo.Servidor Nohup para evitar abortar comandos.
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
L'utilizzo di nohup in foreground non è molto utile in quanto non sarà possibile interagire con la shell fino al completamento del comando.
Per eseguire nohup in background, aggiungere il simbolo & al termine del comando:
nohup mycomand &
Quando si esegue il comando in background, l'ID del processo della shell (circondato da parentesi) e l'ID del processo verranno stampati sul terminale:
Dovreste ricevere un messaggio di output simile al seguente:
[1] 13265
Se per qualche motivo si desidera interrompere il processo, utilizzare il comando kill seguito dall'ID del processo:
kill -9 13265
Reindirizzamento dell'output su un file
desea redirigir la salida del comando a un archivo, puede utilizar la redirección de la shell estándar.De forma predeterminada, nohup redirige la salida al archivo nohup.out.
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 &
Alternativa
Hay una serie de programas alternativos que puede utilizar para evitar cerrar un comando cuando cierra la terminal o cierra la sesión.
o la pantalla de GNU es un programa multiplexor terminal que le permite iniciar una sesión de pantallas y de abrir cualquier número de ventanas (terminales virtuales) dentro de dicho período de sesiones.Pantalla de
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.
sesiones TMux son persistentes, lo que significa que los programas que se ejecutan en tmux seguirá funcionando incluso si se cierra la terminal. tmux también puede crear una sesión y abrir varias ventanas dentro de esa sesión. es una alternativa moderna a la pantalla de GNU. Tmux
es un sistema incorporado en la cáscara que elimina un trabajo cáscara de la concha de control laboral. A diferencia de nohup, también puede usar Disown en procesos en ejecución.No poseer
Conclusión
A estas alturas, debe tener un buen conocimiento 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.