el comandonohup
ejecuta otro programa especificado como su argumento e ignora todas las señalesSIGHUP
(hangup). SIGHUP
es una señal que se envía a un proceso cuando su terminal de control está cerrado.
por lo general, cuando se ejecuta un programa sobre SSH, si su conexión se cae o cierra la sesión, la sesión se termina, y todos los procesos ejecutados desde el terminal se detendrán. Aquí es donde el comando nohup
es útil., Ignora todas las señales de hangup, y el proceso continuará ejecutándose.
Cómo Utilizar el nohup Comando #
La sintaxis de la etiqueta nohup
comando es como sigue:
nohup COMMAND
El comando no aceptar cualquiera de las otras opciones, a excepción de la norma --help
y --version
.,
echemos un vistazo al siguiente ejemplo:
nohup mycommand
nohup: ignoring input and appending output to 'nohup.out'
nohup
ejecuta el mycommand
comando en el primer plano y redirecciona la salida del comando a la etiqueta nohup.out
archivo. Este archivo se crea 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 crea en el directorio principal del usuario.
si cierra la sesión o cierra el terminal, el proceso no se termina.,
ejecutar el comando en segundo plano #
Usando nohup
en primer plano no es muy útil porque no podrá interactuar con el shell hasta que se complete el comando.
ejecutar el comando en el fondo , añadir la etiqueta &
símbolo al final del comando:
nohup mycommand &
La salida incluye el shell ID de trabajo (rodeado con soportes) y el IDENTIFICADOR de proceso:
25177
puede utilizar el ID de trabajo para traer el comando en el primer plano utilizando la etiqueta fg
comando.,
si por alguna razón desea terminar el proceso, use el comando kill
seguido del ID del proceso:
kill -9 25132
redireccionando la salida a un archivo #
por defecto, nohup
redirige la salida del comando a el archivo nohup.out
. Si desea redirigir la salida a un archivo diferente, utilice la redirección de shell estándar.,
por ejemplo, Para redirigir la salida estándar y el error estándar para el mycommand.out
podría utilizar:
nohup mycommand > mycommand.out 2>&1 &
Para redirigir la salida estándar y el error estándar para archivos diferentes:
nohup mycommand > mycommand.out 2> mycommand.err &
Alternativas #
Hay varias alternativas de programas que puede utilizar para evitar un comando que se termina cuando se cierra el terminal o se desconecten.,
Screen #
Screen o GNU Screen es un programa multiplexor de terminal que le permite iniciar una sesión de screen 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 se desconecta.
Tmux #
Tmux es una alternativa moderna a la GNU pantalla. Con Tmux, también puede crear una sesión y abrir varias ventanas dentro de esa sesión. Las sesiones de Tmux son persistentes, lo que significa que los programas que se ejecutan en Tmux continuarán ejecutándose incluso si cierra el terminal.,
Disown #
disown
es un shell integrado que elimina un trabajo de shell del control de trabajo del shell. A diferencia de nohup
, también puede usar disown
en procesos en ejecución.
conclusión #
nohup
le permite evitar que los comandos se terminen cuando cierra sesión o sale del terminal.