Órdenes jobs, fg, bg, nohup
Tabla de contenido:
- Cómo usar el comando nohup
- Ejecutar el comando en segundo plano
- Redirigir la salida a un archivo
- Alternativas
- Pantalla
- Tmux
- Desconocer
- Conclusión
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:
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.
Comando Chmod en Linux (permisos de archivo)
En Linux, el acceso a los archivos se gestiona a través de los permisos, atributos y propiedad del archivo. Este tutorial cubre cómo usar el comando chmod para cambiar los permisos de acceso de archivos y directorios.
Comando chgrp en linux (cambiar grupo)
En Linux, cada archivo está asociado con un propietario y un grupo y tiene permisos que determinan qué usuarios pueden leer, escribir o ejecutar el archivo. El comando chgrpc cambia la propiedad del grupo de los archivos dados.
Comando cp en linux (copiar archivos)
cp es una utilidad de línea de comandos para copiar archivos y directorios en sistemas Unix y Linux.







