Androide

Comando nohup de Linux

Órdenes jobs, fg, bg, nohup

Órdenes jobs, fg, bg, nohup

Tabla de contenido:

Anonim

El comando nohup ejecuta otro programa especificado como argumento e ignora todas las SIGHUP ( SIGHUP ). SIGHUP es una señal que se envía a un proceso cuando su terminal de control está cerrado.

Por lo general, cuando ejecuta un programa a través de SSH, si su conexión se cae o cierra la sesión, la sesión finaliza 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 bloqueo y el proceso continuará ejecutándose.

Cómo usar el comando nohup

La sintaxis para el comando nohup es la siguiente:

nohup COMMAND

El comando no acepta ninguna otra opción, excepto el estándar --help y --version .

Echemos un vistazo al siguiente ejemplo:

nohup mycommand

nohup: ignoring input and appending output to 'nohup.out'

nohup ejecuta el comando mycommand en primer plano y redirige la salida del comando al archivo nohup.out . 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 de inicio del usuario.

Si cierra sesión o cierra el terminal, el proceso no finaliza.

Ejecutar el comando en segundo plano

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

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

nohup mycommand &

La salida incluye la ID del trabajo de shell (entre paréntesis) y la ID del proceso:

25177

Puede usar la ID del trabajo para poner el comando en primer plano con el comando fg .

Si por alguna razón desea terminar el proceso, use el comando kill seguido de la ID del proceso:

kill -9 25132

Redirigir la salida a un archivo

Por defecto, nohup redirige la salida del comando al archivo nohup.out . Si desea redirigir la salida a un archivo diferente, use la redirección de shell estándar.

Por ejemplo, para redirigir la salida estándar y el error estándar a mycommand.out , usaría:

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

Existen varios programas alternativos que puede usar para evitar que un comando se cancele cuando cierre el terminal o se desconecte.

Pantalla

Screen o GNU Screen es un programa multiplexor de terminal que le permite iniciar una sesión de pantalla y abrir cualquier cantidad 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 pantalla de GNU. 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.

Desconocer

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

Conclusión

nohup permite evitar que los comandos se terminen cuando cierra la sesión o sale del terminal.

terminal nohup