fbpx Comando bg en Linux: Procesos en Segundo Plano (bg, fg, jobs) | Certificação Linux

Comando bg en Linux: Cómo reanudar procesos suspendidos en segundo plano

📅 01/01/2019 ⏱ 5 min ✍️ Uira Ribeiro
Linuxcomandos
Comando bg en Linux: Cómo reanudar procesos suspendidos en segundo plano
Exam Pass App — mais de 7.000 questões LPI, offline, em 5 idiomas, disponível no Android e na App Store
Disponible en
Google Play
Disponible en
App Store

Como sistema operativo multitarea, Linux soporta la ejecución de muchos procesos - que no son más que programas en ejecución. Estos programas pueden ejecutarse conectados al terminal o no. Si están conectados al terminal, decimos que está en primer plano. Y si no necesitan estar conectados al terminal para funcionar, decimos que está en ejecución en segundo plano.

El Comando bg en Linux coloca un proceso detenido con la señal SIGSTOP en segundo plano.

¿Qué son los Procesos en primer plano (Foreground)?

Un proceso en primer plano es cualquier programa que cuando se ejecuta, está directamente conectado al terminal. Algunos procesos en primer plano permiten algún tipo de interfaz que ofrece soporte a la interacción continua del usuario, mientras otros ejecutan una tarea y "congelan" el terminal mientras la tarea se completa.

El propio bash es un proceso que está en ejecución en primer plano, esperando por una interacción del usuario al aguardar y ejecutar comandos.

Cuando ejecutas un comando en bash, se crea un proceso hijo, y el terminal queda a cargo del proceso hijo, que posee el terminal hasta que termine de ejecutar.

En el ejemplo, cuando escribes ls en bash, el comando ls se ejecuta en primer plano, y proporciona una lista de archivos. No devuelve el terminal a bash hasta que termine de listar los archivos:

$ ls

Si existen muchos archivos en el directorio, ls puede demorar en devolver el prompt de comandos al usuario.

¿Qué son los Procesos en segundo plano (Background)?

Un proceso en segundo plano es cualquier programa que cuando se ejecuta, no está conectado al terminal. Simplemente ejecuta, sin ninguna interacción directa con el usuario. Este tipo de programas generalmente son daemons (servicios) que el sistema provee, tales como un servidor web, servidor de correo, etc.

El símbolo & en Linux

Virtualmente cualquier programa que pueda ejecutarse sin exigir la interacción del usuario puede ejecutarse en segundo plano. Para eso, basta con agregar el símbolo de "&" al final del comando.

La salida del comando en segundo plano aún puede descargarse en el terminal, aunque ese comando esté ejecutándose en segundo plano. 

En el ejemplo, ls puede ejecutarse en segundo plano, pero su salida aún va al terminal:

$ ls -l &[1] 14907[ec2-user@ip-172-30-0-241 etc]$ total 1444drwxr-xr-x  4 root  root       35 jun 21 18:54 acpi-rw-r--r--  1 root  root       16 mar  8  2019 adjtime-rw-r--r--  1 root  root     1518 jun  7  2013 aliases-rw-r--r--  1 root  root    12288 abr  5 13:44 aliases.dbdrwxr-xr-x  2 root  root      261 abr 18 20:16 alternativesdrwxr-xr-x  3 root  root       17 mar  8  2019 amazondrwxr-xr-x  2 root  root       50 abr 10 11:06 amplify-agen( ... )

Generalmente los programas que ejecutan en segundo plano están preparados para eso, de modo que no envían nada a la salida estándar (STDOUT). Pero puedes enviar la salida estándar de un comando que no fue preparado para esto con el conducto:

$ ls -l > /tmp/saida &

Control de Procesos

Cada programa que se pone en ejecución en el shell es tratado como un Job (trabajo), que no es más que un Proceso que el shell gestiona.

Cada Job recibe una ID secuencial. Como un job es un proceso, cada job también tiene un ID de proceso (PID) asociado. Existen tres tipos de estados de jobs:

  1. Primer plano (foreground): Cuando introduces un comando en una ventana del terminal, el comando ocupa la ventana del terminal hasta que se complete. Este es un job en primer plano.
  2. Segundo plano (background): cuando introduces el símbolo & al final de una línea de comando, el comando se ejecuta sin ocupar la ventana del terminal. El prompt del shell se muestra inmediatamente después de que presionas Enter. Este es un ejemplo de un trabajo en segundo plano.
  3. Detenido (stopped): si presionas Control + Z para un job en primer plano o introduces el comando stop para un job en segundo plano, el job será interrumpido. Este job se llama job detenido.

Existen algunos comandos que permiten gestionar los Jobs en Linux, tales como bg, fg y jobs.

El Comando bg en Linux

Después de que un proceso entró en ejecución en primer plano, esto es, conectado a un terminal, puede ser colocado en segundo plano.

Para hacer esto es necesario interrumpir temporalmente su ejecución con la señal SIGTSTP (20) presionando las teclas Ctrl-z y activando luego el comando bg.

El comando bg en Linux coloca en segundo plano un proceso en ejecución que fue "congelado" por la señal SIGTSTP. Ver en el ejemplo:

$ find / -name mss > lista_msg.txtCTRL-z[1]+ Stopped 		find / -name mss >lista_msg.txt
$ bg[1]+ find / -name mss >lista_msg.txt &

En este ejemplo el utilitario find se ejecuta normalmente. Durante su ejecución se envía la señal TSTP (ctrl-z) y luego es colocado en segundo plano con el comando bg y gana el número de tarea 1 por el control de tareas. 

Cada proceso que sea colocado en ejecución con el "&" también gana un número de Job por el control de tareas.

El bg también acepta que el número del job - sea pasado como parámetro. Para enviar el proceso nuevamente al primer plano (conectado al terminal), el comando fg puede ser usado.

Y para verificar la lista de procesos en segundo plano, el comando jobs puede ser usado.

Aprende mucho más sobre Linux en nuestro curso en línea. Puedes realizar la inscripción aquí. Si ya tienes una cuenta, o quieres crear una, simplemente ingresa o crea tu usuario aquí.

¿Te gustó? Comparte

Uira Ribeiro

Prof. Uirá Ribeiro

Chair do Board do Linux Professional Institute

Después de años viendo profesionales perder horas en tareas simples por no conocer las herramientas correctas de Linux, decidí enseñar.
Hoy soy autor de la mayoría de los Materiales de Aprendizaje oficiales de la LPI y mentor de más de 14,000 alumnos certificados.

Conoce mi historia completa →

Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.

Certificação Linux — a plataforma líder em certificações Linux no Brasil
WhatsApp