Cómo ejecutar comandos de Linux en segundo plano

27 feb 2021 3 min di lettura
Cómo ejecutar comandos de Linux en segundo plano
Indice dei contenuti

Introducción

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

¿Qué pasa si el comando tarda mucho en finalizar y, mientras tanto, desea ejecutar otros comandos? Tienes varias opciones a tu disposición. La opción más obvia y simple es iniciar una nueva sesión de shell y ejecutar el comando dentro de 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 interacción del usuario.

En este artículo, hablaremos sobre procesos en segundo plano y Linux. Le mostraremos cómo iniciar un comando en segundo plano y cómo mantener el proceso en ejecución después de cerrar la sesión de shell.

Ejecuta un comando en segundo plano

Para ejecutar un comando en segundo plano, agregue el & al final del comando:

command &

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

[1] 24166

Puede tener varios procesos ejecutándose simultáneamente en segundo plano.

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

command > /dev/null 2>&1 &

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

Utilice la jobs para ver el estado de todos los procesos detenidos y en segundo plano en la sesión de shell actual:

jobs -l

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

[1]+ 24166 Running ping google.com &

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

fg

Si tiene varios trabajos en segundo plano, incluya % y el ID del trabajo después del comando:

fg %1

kill el proceso en segundo plano, use el comando kill seguido del ID del proceso:

kill -9 24166

Mover un proceso de primer plano a segundo plano

Para mover un proceso en primer plano que se ejecuta en segundo plano:

  1. Detenga el proceso escribiendo Ctrl+Z
  2. Mueva el proceso interrumpido a un segundo plano escribiendo bg.

Mantenga los procesos en segundo plano en ejecución después de salir de un shell

Si se pierde la conexión o si se desconecta de la sesión de shell, los procesos en segundo plano terminan. Hay varias formas de mantener el proceso en ejecución después de que finaliza la sesión de shell interactiva.

Una forma es eliminar el trabajo del control de trabajos del shell mediante el disown

disown

Si tiene más de un trabajo en segundo plano, incluya % y el ID después del comando:

disown %1

Verifique que el trabajo se elimine de la tabla de trabajos activos mediante el comando jobs -l Para enumerar todos los procesos en ejecución, incluido el desconocido, use el comando ps aux

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

El comando nohup ejecuta otro programa especificado como argumento e ignora todas las señales ( 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 nohup, escriba:

nohup command &

La salida del comando se redirige al archivo nohup.out

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

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

Alternativas

Existen numerosos 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 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 está desconectado.

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 funcionando incluso si cierra la 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 esté listo para poder ejecutar otro.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.