Androide

Cómo ejecutar comandos de Linux en segundo plano

Curso de Linux básico - 24. Tareas en primer y segundo plano

Curso de Linux básico - 24. Tareas en primer y segundo plano

Tabla de contenido:

Anonim

Por lo general, cuando ejecuta un comando en la terminal, debe esperar hasta que finalice el comando antes de poder ingresar otro. Esto se llama ejecutar el comando en primer plano o en primer plano. Cuando un proceso se ejecuta en primer plano, ocupa su caparazón y puede interactuar con él utilizando los dispositivos de entrada.

¿Qué sucede si el comando tarda mucho tiempo en finalizar y desea ejecutar otros comandos mientras tanto? Tienes varias opciones a tu disposición. La opción más obvia y directa es iniciar una nueva sesión de shell y ejecutar el comando en ella. Otra opción es ejecutar el comando en segundo plano.

Un proceso en segundo plano es un proceso / comando que se inicia desde un terminal y se ejecuta en segundo plano, sin la interacción del usuario., hablaremos sobre los procesos en segundo plano es Linux. Le mostraremos cómo iniciar un comando en segundo plano y cómo mantener el proceso en ejecución después de que se cierre la sesión de shell.

Ejecute un comando de Linux en segundo plano

Para ejecutar un comando en segundo plano, agregue el símbolo de & comercial ( & ) al final del comando:

command &

La ID del trabajo de shell (entre paréntesis) y la ID del proceso se imprimirán en el terminal:

25177

Puede tener múltiples procesos ejecutándose en segundo plano al mismo tiempo.

El proceso en segundo plano continuará escribiendo mensajes en el terminal desde el que invocó el comando. Para suprimir los mensajes stdout y stderr use la siguiente sintaxis:

command > /dev/null 2>&1 &

>/dev/null 2>&1 significa redirigir stdout a /dev/null y stderr a stdout .

Use la utilidad de jobs para mostrar el estado de todos los trabajos detenidos y en segundo plano en la sesión de shell actual:

jobs -l

La salida incluye el número de trabajo, la ID del proceso, el estado del trabajo y el comando que inició el trabajo:

+ 25177 Running ping google.com &

Para traer un proceso en segundo plano al primer plano, use el comando fg :

fg

fg %1

Para finalizar el proceso en segundo plano, use el comando kill seguido de la ID del proceso:

kill -9 25177

Mover un proceso en primer plano a fondo

Para mover un proceso en primer plano en ejecución en segundo plano:

  1. Detenga el proceso escribiendo Ctrl+Z Mueva el proceso detenido al fondo escribiendo bg .

Mantenga los procesos en segundo plano ejecutándose después de que salga un shell

Si su conexión se cae o se desconecta de la sesión de shell, los procesos en segundo plano finalizan. Hay varias formas de mantener el proceso en ejecución después de que finalice la sesión de shell interactivo.

Una forma es eliminar el trabajo del control de trabajo de la shell utilizando el intérprete de comandos de shell disown :

disown

disown %1

Confirme que el trabajo se elimina de la tabla de trabajos activos con el comando jobs -l . Para enumerar todos los procesos en ejecución, incluidos los rechazados, use el comando ps aux .

Otra forma de mantener un proceso en ejecución después de la salida del shell es usar nohup .

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.

Para ejecutar un comando en segundo plano con el comando nohup , escriba:

nohup command &

La salida del comando se redirige al archivo nohup.out .

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

Alternativas

Existen varios programas que le permiten tener múltiples sesiones interactivas al mismo tiempo.

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 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 continúan ejecutándose incluso si cierra el terminal.

Conclusión

Para ejecutar un comando en segundo plano, incluya & al final del comando.

Cuando ejecuta un comando en segundo plano, no tiene que esperar hasta que finalice antes de poder ejecutar otro.

nohup fg bg puestos de trabajo terminal denegado