Entender cómo ejecutar procesos en foreground y background en la terminal es clave para optimizar tareas que requieren tiempo y mantener productiva la sesión de trabajo. Los procesos en primer plano (foreground) muestran la salida directamente en la terminal, mientras que los procesos en segundo plano (background) permiten ejecutar comandos simultáneamente, sin bloquear el uso inmediato.
¿Qué diferencia existe entre foreground y background?
Trabajar con comandos en la terminal normalmente sucede en primer plano, observando directamente los resultados al momento. No obstante, algunos comandos requieren mucho tiempo de ejecución, dificultando continuar usando la terminal mientras esperan finalizar. Es aquí cuando entra en juego el manejo en segundo plano.
Foreground: ejecución inmediata y secuencial, bloqueando temporalmente la terminal.
Background: comandos ejecutados "tras bambalinas", que permiten continuar operaciones paralelas.
¿Cómo ejecutar y controlar procesos en background?
Enviar procesos a segundo plano proporciona versatilidad al evitar bloqueos innecesarios. El procedimiento es sencillo:
Al final del comando, añade un ampersand (&). Ejemplo práctico:
sleep1000&&echo"base de datos actualizado"&
Este comando correrá en segundo plano devolviendo inmediatamente el control de la terminal. Para gestionar estos procesos existen comandos específicos:
jobs: Lista procesos actuales en segundo plano mostrando sus estados (activos o pausados).
control c (Control + C): Cancela un proceso inmediatamente.
control z (Control + Z): Pausa temporalmente el proceso activo.
fg + %ID: Trae el proceso al primer plano indicando su ID precedido por %.
bg + ID: Reanuda el proceso pausado o suspendido en segundo plano.
¿Cómo gestionar eficazmente procesos de larga duración?
Para optimizar rutinas y ejecutar diversas tareas simultáneamente como actualizaciones del sistema, correos electrónicos o bases de datos, los procesos en segundo plano ofrecen ventajas significativas:
Posibilidad de correr múltiples tareas paralelamente.
Control de tareas mediante identificadores específicos asignados a cada proceso.
Reducción del tiempo de inactividad esperando finalizar operaciones.
Estas opciones proporcionan control total sobre la ejecución y gestión eficiente del tiempo en operaciones adelantadas desde la terminal.
¿Tienes experiencia en procesos que requieran ejecución prolongada en tu terminal? Compártela en los comentarios para ampliar técnicas prácticas en este ámbito.
Si el proceso ya esta en background podemos pausarlo tambien con
kill -STOP %1
Y para reanudarlo
kill -CONT %1
Si tienes varios procesos ejecutados en background puedes usar
kill -STOP %1 %2
para pausar simultáneamente el proceso 1 y 2. También aplica por igual si necesitas reanudar esas tareas al mismo tiempo con
kill -CONT %1 %2
Al parecer en manjaro con ZSH hay que agrupar todos los comandos para que funcione correctamente: (sleep 10 && echo "base de datos actualizado") &
Gran aporte! Justo a mi no me estaba mandando el proceso a background
genial, ya tenia rato que no encontraba la solucion, ni gemini me ayudaba jaja
🖥️ Procesos en Foreground y Background en la Terminal
🔍 ¿Qué significan?
🟢 Foreground (Primer plano)
Ejecución directa en la terminal.
Muestra resultados en tiempo real.
Bloquea el uso de la terminal hasta que termina.
🔵 Background (Segundo plano)
Se ejecuta en paralelo, "tras bambalinas".
Permite seguir usando la terminal.
Ideal para tareas largas o múltiples.
🛠️ Cómo ejecutar en segundo plano
👉 Añade un ampersand (&) al final del comando:
sleep 1000 && echo "base de datos actualizado" &
✔️ El proceso inicia sin bloquear la terminal.
📋 Comandos útiles de control
jobs → Lista procesos en background.
Ctrl + C → Cancela proceso activo.
Ctrl + Z → Pausa proceso activo.
fg %ID → Trae proceso al foreground.
bg %ID → Reanuda proceso en background.
⚙️ Ventajas del background
✅ Ejecutar tareas simultáneamente.
✅ Controlar cada proceso con su ID.
✅ Reducir tiempos de espera.
✅ Mejor aprovechamiento de la terminal.
Usar la terminal integrada en Visual Studio Code ofrece varios beneficios clave durante el desarrollo:
Fluidez: Permite ejecutar comandos y scripts sin salir del entorno de desarrollo, lo que ahorra tiempo.
Personalización: Puedes ajustar la terminal según tus preferencias, utilizando diferentes shells (como PowerShell, Bash, etc.).
Integración: Facilita la gestión de versiones (Git) y la ejecución de herramientas de construcción, ya que está directamente integrada con tu proyecto.
Accesibilidad: Proporciona un acceso rápido a la documentación y comandos sin cambiar de ventana.
Estos puntos optimizan tu flujo de trabajo y aumentan la eficiencia general en el desarrollo.
Esta clase es de las mas interesantes puesto que nos enseña a manejar y ver procesos que corren en foreground y background Excelente
Para recordar
Comandos
sleep (permite manejar el tiempo en que queremos que se ejecute una orden )
& (ampersand) al final de un comando hace que se ejecute en segundo plano
jobs: Lista procesos actuales en segundo plano mostrando sus estados (activos o pausados).
control c (Control + C): Cancela un proceso inmediatamente.
control z (Control + Z): Pausa temporalmente el proceso activo.
fg + %ID: Trae el proceso al primer plano indicando su ID precedido por %.
bg + ID: Reanuda el proceso pausado o suspendido en segundo plano.
😼 Dato curioso, la camisa del profe dice:
ポケットのねこ --> Gato de bolsillo 😹
Yo uso Linux Mint. En mi caso para poder enviar procesos al background tengo que agregar paracentesis.
(sleep 1000 && echo "Base actualizada") &
Muchas gracias, me pasó en mac lo mismo.
Es porque estas usando como zsh
Viendo el uso del bg, me surgio una idea de como usarlo como un countdown.
Situación: tengo una reunión en 10 minutos, no tengo celular y no quiero otro programa abierto en mi PC.
Si estan usando zsh y al ejecutar sleep 1000 && echo "Base de datos actualizado" &, el terminal se queda capturado, intenten (sleep 1000 && echo "Base de datos actualizado") & con parentesis
Sleep1000&& echo "base de datos actualizada"Me gusto mucho este comando desde la terminal!
Puedes correr ng serve en segundo plano añadiendo & al final del comando (ng serve &). Así liberarás la terminal. Mientras estas trabajando con angular, excelente clase yo solía abrir dos terminales
Somos 2, yo siempre abría otra terminal jajaja. Con esta clase aprendí algo nuevo y de gran utilidad.
para Mac debes poner paréntesis indicando los procesos que pondrás en background:
(sleep 30 && echo "end") &
La ejecución de un comando en foreground no es necesariamente más rápida que en background; la diferencia principal radica en la forma en que interactúas con la terminal. En foreground, el comando ocupa la terminal y muestra su salida directamente, impidiendo que ejecutes otros comandos hasta que termine. En cambio, al ejecutarlo en background, el proceso se realiza de forma paralela, permitiéndote continuar utilizando la terminal. Sin embargo, el tiempo de ejecución del comando es el mismo en ambos casos; solo cambia la forma en que gestionas tus tareas.
Para los que no le funciono el
sleep 50 && echo "Terminado" &
se debe encerrar los dos comandos para que ambos entren al BG
(sleep 50 && echo "terminado") &
La clase se centra en la gestión de procesos en la terminal de Linux, distinguiendo entre procesos en foreground y background. Aprendiste a ejecutar comandos en background utilizando el símbolo "&", lo que permite seguir usando la terminal para otros comandos mientras un proceso se ejecuta en segundo plano. También se abordaron comandos como "jobs" para listar procesos y "fg" para traerlos al foreground. La clase finaliza resaltando la importancia de saber controlar y pausar procesos en la terminal para optimizar tu flujo de trabajo.
hola me gustaria aportar que si desean que programas como chromium que estan botando logs de errores en la terminal se ejecuten en segundo plano mientras usas la misma terminal puedes usar este comando
chromium > /dev/null 2>&1 &
con esto se envian los errores al dev/null y queda todo ok
📗Mis notas de esta clase:
📘 Clase 18 – Procesos en Foreground y Background en la terminal
🧠 Idea central
En la terminal, los comandos pueden ejecutarse en foreground (primer plano) o en background (segundo plano). El foreground bloquea la terminal hasta que el proceso termina, mientras que el background permite seguir usando la terminal mientras una tarea larga se ejecuta “detrás de escena”. Dominar este flujo te permite trabajar en paralelo, no perder tiempo esperando procesos largos (instalaciones, respaldos, scripts) y controlar procesos (pausar, reanudar, traer al frente o enviarlos al fondo) según lo necesites.
📚 Conceptos clave
• Foreground (primer plano)
Cuando ejecutas un comando normalmente (por ejemplo, sleep 3), el proceso corre en foreground: la terminal queda “ocupada” hasta que termina. Esto es útil para tareas cortas o cuando quieres ver la salida en tiempo real y reaccionar (leer logs, prompts interactivos). La desventaja es que bloquea tu flujo de trabajo si el comando tarda mucho (instalaciones, scripts largos, procesos de mantenimiento).
• Background (segundo plano)
Enviar un proceso al background con & permite que el comando siga ejecutándose mientras recuperas el control inmediato de la terminal. Es ideal para tareas largas o no interactivas (respaldos, descargas, builds). Los procesos en background siguen produciendo salida; según el comando, esa salida puede mezclarse con tu prompt, por lo que conviene redirigir logs cuando el proceso es ruidoso.
• Señales de control: Ctrl + C y Ctrl + Z
Ctrl + C envía una señal de interrupción (SIGINT) y termina el proceso en foreground. Útil para abortar tareas que se colgaron o que ya no necesitas.
Ctrl + Z envía una señal de suspensión (SIGTSTP) y pausa el proceso en foreground. El proceso no muere: queda “stopped” y puedes decidir si lo reanudas en foreground (fg) o en background (bg). Esto es clave para reorganizar tu trabajo sin perder el estado del proceso.
• Jobs e identificadores (%ID)
La shell mantiene un listado de procesos “controlados” por la sesión con jobs. Cada proceso tiene un ID (por ejemplo, [1]). Con ese ID puedes:
Traerlo al frente: fg %1
Reanudarlo en background: bg %1
Esto te da control fino sobre qué corre dónde y en qué momento.
• Casos de uso reales (productividad)
Lanzar una actualización larga en background y seguir trabajando.
Pausar una tarea pesada, hacer otra cosa urgente, y luego reanudarla.
Ejecutar varios procesos en paralelo (por ejemplo, builds o scripts) y monitorearlos con jobs.
Combinado con redirecciones y operadores de control, puedes montar flujos de automatización más robustos.
💻 Comandos / herramientas (con ejemplos reales)
Simular un proceso largo (sleep):
sleep 3sleep 3&& echo "Comando finalizado"
Enviar un proceso al background:
sleep 1000&& echo "Base de datos actualizada"&
Ver procesos en background:
jobs
Traer un proceso al foreground:
fg %1
Pausar un proceso en foreground:
# PresionaCtrl+Z
Reanudar un proceso pausado en background:
bg %1
Cancelar un proceso en foreground:
# PresionaCtrl+C
🧪 Práctica paso a paso (lo que se hace en la clase)
Ejecutar un proceso corto en foreground:
sleep 3&& echo "Comando finalizado"
Ejecutar un proceso largo:
sleep 1000&& echo "Base de datos actualizada"
(Cáncelalo con Ctrl + C).
Enviarlo al background:
sleep 1000&& echo "Base de datos actualizada"&
Ver jobs:
jobs
Traerlo al foreground:
fg %1
Pausarlo:
# Ctrl+Z
Reanudarlo en background:
bg %1
⚠️ Errores comunes / trampas
Olvidar & y bloquear la terminal con procesos largos.
Pensar que Ctrl + Z mata el proceso (solo lo pausa).
No usar jobs y perder de vista qué está corriendo.
Mezclar salidas de procesos en background con tu prompt (mejor redirigir logs).
Creer que fg crea un proceso nuevo (solo trae el mismo al frente).
📌 Comandos vistos en clase (nuevos, con breve descripción)
sleep # simula procesos que tardan N segundos
& # envía un proceso al background
jobs # lista procesos en background/stopped de la sesión
fg %ID # trae un proceso al foreground
bg %ID # reanuda un proceso pausado en background
Ctrl+C # cancela el proceso en foreground
Ctrl+Z # pausa el proceso en foreground(lo deja stopped)
🧩 Resumen
En esta clase aprendiste a diferenciar y controlar procesos en foreground y background. Viste cómo enviar tareas largas al background para no bloquear tu terminal, cómo pausar (Ctrl + Z) y reanudar (fg/bg) procesos, y cómo cancelarlos (Ctrl + C) cuando ya no los necesitas. Con jobs y los IDs (%1, %2, …) puedes orquestar múltiples tareas en paralelo. Este control es esencial para automatizar flujos de trabajo, ahorrar tiempo y trabajar de forma más profesional en la terminal.
🎯 Para qué me sirve en la vida real / en la práctica
Ejecutar instalaciones o scripts largos sin detener tu trabajo.
Correr tareas en paralelo (backups, builds, migraciones).
Pausar procesos para priorizar tareas urgentes.
Mantener sesiones productivas en servidores remotos.
Combinar con redirecciones para logs de procesos largos.