Enviar un proceso a Linux en segundo plano

Send Process Background Linux



Cuando trabajamos con entornos de escritorio gráficos, rara vez nos preocupamos por los procesos en segundo plano. Si tenemos un proceso ejecutándose en primer plano, podemos generar rápidamente otra ventana de terminal y continuar con nuestro trabajo.

Sin embargo, si se encuentra en un shell terminal sin formato como SSH, a menudo se sentirá preocupado por los procesos que ocupan y bloquean el shell hasta que se completan, especialmente en trabajos de larga ejecución. Ahí es donde entra en juego el concepto de procesos de fondo y primer plano.







Este tutorial discutirá qué son los procesos en segundo plano y en primer plano, incluida su creación y gestión en Linux.



¿Qué es un proceso?

Permítanme comenzar por el nivel básico: ¿qué es un proceso?



En Linux, un proceso es una instancia de un programa. Normalmente, esto significa que cualquier comando o ejecutable en un shell es un proceso.





Existen principalmente dos tipos de procesos:

  • Procesos de primer plano
  • Procesos en segundo plano

Los procesos de primer plano son principalmente aplicaciones típicas que lanzamos e interactuamos con ellos. Un ejemplo sería el administrador de archivos nautilus en Gnome. En la mayoría de los casos, podemos iniciar procesos en primer plano desde el shell o el entorno de escritorio.



Por otro lado, los procesos en segundo plano se ejecutan en segundo plano y no requieren entrada ni interacción del usuario. Un ejemplo sería cualquier demonio típico de Linux.

Cómo ejecutar un proceso en segundo plano

Supongamos que tenemos un proceso que, mientras se ejecuta, ocupa la sesión de shell y nos impide ejecutar comandos hasta que sale.

Por ejemplo, si ejecutamos el navegador Firefox en el shell, ocupará la sesión hasta la finalización del proceso.

$Firefox


Como puede ver, mientras Firefox se esté ejecutando, el indicador de shell no estará disponible y no podemos ejecutar más comandos.

Para solucionar esto, podemos hacerlo de dos formas:

1: uso de un ampersand (&)

El primer método es utilizar el signo &. Esto le dice al shell que ejecute cualquier comando que preceda al ampersand en segundo plano.

Un ejemplo:

Firefox&

En tal escenario, el proceso se ejecuta en segundo plano y se genera como un nuevo indicador de shell que nos permite continuar ejecutando comandos.

También proporciona dos identificadores numéricos. El primero entre corchetes es el ID del trabajo, mientras que el siguiente es el ID del proceso.

2: Usando CTRL + Z, comando bg.

El siguiente método que puede usar para poner un proceso en segundo plano es usar el atajo CTRL + Z. Esto evita que el proceso bloquee el shell. Luego puede usar el comando bg para enviarlo a un segundo plano.

Por ejemplo, comience iniciando Firefox como:

$Firefox

Mientras se ejecuta el proceso, presione CTRL + Z. Esto devuelve su indicador de shell. Finalmente, ingrese el comando bg para impulsar el proceso en segundo plano.

Cómo mostrar procesos en segundo plano

Para ver y administrar procesos en segundo plano, use el comando trabajos en el shell. Eso mostrará los trabajos en segundo plano en la sesión de terminal actual.

Por ejemplo:

$trabajos

Un ejemplo de salida de trabajos en segundo plano:

Para traer un proceso que se ejecuta en segundo plano en primer plano, use el comando fg seguido de la identificación del trabajo.

Por ejemplo, para traer el trabajo de Firefox en primer plano, usamos el comando:

$fg %1

Para volver a poner en segundo plano, presione CTRL + Z seguido del comando bg.

Cómo hacer que un proceso sea persistente después de que Shell muere

Cuando está ejecutando procesos en segundo plano y su sesión de shell muere, todos los procesos asociados con ella terminan, lo que puede ser problemático, especialmente si se trata de una sesión SSH.

Sin embargo, esto no es un problema demasiado grande si usa un multiplexor de terminal como tmux o screen porque, en ese caso, simplemente puede volver a conectar la sesión.

Sin embargo, si ejecuta una sesión de shell sin un multiplexor, puede usar el comando nohup.

El comando nohup es inmune a los cuelgues y puede ignorar la señal SIGHUP enviada a un proceso.

Por lo tanto, si ejecuta un comando con nohup, continuará ejecutándose incluso si la sesión de shell muere accidentalmente.

Por ejemplo, para ejecutar Firefox con nohup, use el comando:

nohupFirefox&

Esto ejecutará el proceso en segundo plano mientras persiste una terminación de shell.

Puede ejecutar una nueva sesión de terminal y ver los trabajos en segundo plano. Verá que el proceso aún se ejecuta en segundo plano.

Conclusión

En este tutorial, discutimos varias formas de ejecutar y enviar procesos en segundo plano en Linux. También cubrimos cómo llevar un proceso en segundo plano a un segundo plano y persistir en el bloqueo después de la terminación del shell.