Introducción
En los sistemas operativos Linux, la multitarea es una capacidad esencial que permite a los usuarios ejecutar múltiples procesos simultáneamente. Una característica poderosa de las terminales Linux es el control de trabajos (job control) - la capacidad de gestionar procesos ejecutándolos en segundo plano y trayéndolos al primer plano cuando sea necesario.
Este laboratorio (lab) te introduce al control de trabajos en Linux, centrándose específicamente en el proceso de traer tareas en segundo plano al primer plano. Aprenderás cómo iniciar tareas en segundo plano, listar los trabajos en ejecución y traer tareas específicas al primer plano utilizando el comando fg. Estas habilidades son valiosas para mejorar la productividad cuando se trabajan con operaciones de larga duración en un entorno Linux.
Creación y ejecución de tareas en segundo plano
En este paso, aprenderás cómo crear un script que simule una tarea de larga duración y ejecutarlo en segundo plano.
Comprender los procesos en primer plano y en segundo plano
En una terminal Linux, los procesos pueden ejecutarse en primer plano o en segundo plano:
- Proceso en primer plano: Cuando un comando se ejecuta en primer plano, ocupa tu terminal hasta que se completa. No puedes ejecutar otros comandos hasta que termine.
- Proceso en segundo plano: Cuando un comando se ejecuta en segundo plano, se ejecuta "detrás de escena" mientras tu terminal queda libre para otras tareas.
Comencemos navegando al directorio del proyecto:
cd ~/project
Ahora, creemos un script simple que simule una tarea de larga duración. Lo usaremos para demostrar las operaciones en segundo plano y en primer plano:
nano long_running_task.sh
En el editor nano, ingresa el siguiente código:
#!/bin/bash
echo "Starting a long task..."
sleep 60 ## This will pause for 60 seconds
echo "Task completed."
Para guardar el archivo, presiona Ctrl+O y luego Enter, y luego Ctrl+X para salir de nano.
A continuación, haz el script ejecutable con el siguiente comando:
chmod +x long_running_task.sh
Ejecutemos este script en segundo plano agregando un ampersand (&) al final del comando:
./long_running_task.sh &
Deberías ver una salida similar a esta:
[1] 1234
Starting a long task...
El número entre corchetes [1] es el número de trabajo (job number), y el número después de él (en este ejemplo, 1234) es el ID del proceso. Tu terminal ahora está libre para que ingreses otros comandos mientras el script continúa ejecutándose en segundo plano.
Gestión de múltiples trabajos en segundo plano
En este paso, aprenderás cómo iniciar múltiples tareas en segundo plano y verificar su estado.
Primero, iniciemos otra instancia de nuestro script en segundo plano:
./long_running_task.sh &
Deberías ver otro número de trabajo y ID de proceso mostrados, junto con el mensaje "Starting a long task...".
Verificación de trabajos en segundo plano
Para ver una lista de todos los trabajos que se están ejecutando en segundo plano, utiliza el comando jobs:
jobs
La salida debería ser similar a esta:
[1]- Running ./long_running_task.sh &
[2]+ Running ./long_running_task.sh &
Esto muestra:
- Números de trabajo entre corchetes
[1]y[2] - El estado de cada trabajo (
Running) - El comando que se ejecutó
- El símbolo
+indica el trabajo "actual" (el más recientemente iniciado o utilizado) - El símbolo
-indica el trabajo que se convertiría en el actual si el trabajo actual se completara
Iniciemos un trabajo en segundo plano:
./long_running_task.sh &
Verifiquemos la lista de trabajos nuevamente:
jobs
Ahora deberías ver trabajos en ejecución en la lista.
Traer trabajos al primer plano
En este paso, aprenderás cómo traer trabajos en segundo plano al primer plano utilizando el comando fg.
Uso del comando fg
El comando fg trae un trabajo en segundo plano al primer plano, convirtiéndolo en el proceso activo en tu terminal. Cuando un trabajo está en el primer plano, puede recibir entrada desde el teclado y su salida se muestra directamente en la terminal.
Para traer el trabajo en segundo plano más reciente (marcado con + en la salida del comando jobs) al primer plano, simplemente escribe:
fg
Deberías ver el comando ejecutándose en el primer plano y tu terminal estará ocupada hasta que el comando se complete. La salida se verá así:
./long_running_task.sh
Y si la tarea todavía está en ejecución, tendrás que esperar a que se complete. Cuando termine, verás:
Task completed.
Si necesitas interrumpir un proceso en primer plano antes de que se complete, presiona Ctrl+C.
Iniciemos otro trabajo en segundo plano:
./long_running_task.sh &
Ahora, revisemos la lista de trabajos:
jobs
Poner un trabajo específico en primer plano
En este paso, aprenderás cómo traer un trabajo en segundo plano específico al primer plano utilizando su número de trabajo.
Uso de fg con números de trabajo
Cuando tienes múltiples trabajos en segundo plano, puedes traer un trabajo específico al primer plano haciendo referencia a su número de trabajo con el comando fg.
Primero, asegúrate de tener múltiples trabajos en ejecución. Inicia un par de nuevas tareas en segundo plano:
./long_running_task.sh &
./long_running_task.sh &
Revisa la lista de trabajos y sus números:
jobs
Para traer un trabajo específico al primer plano, utiliza el formato fg %jobnumber. Por ejemplo, para traer el trabajo número 1 al primer plano:
fg %1
La salida mostrará el comando en ejecución en el primer plano:
./long_running_task.sh
Espera a que la tarea se complete o presiona Ctrl+C para interrumpirla.
Ahora, intenta traer otro trabajo al primer plano. Por ejemplo, si tienes un trabajo con número 2:
fg %2
Esta técnica es útil cuando necesitas cambiar entre múltiples tareas, prestando atención a un proceso específico según sea necesario.
Resumen
En este laboratorio, has aprendido habilidades esenciales para gestionar procesos en un entorno Linux:
Creación y ejecución de tareas en segundo plano: Has creado un script que simula una operación de larga duración y has aprendido cómo ejecutarlo en segundo plano utilizando el símbolo
&.Gestión de múltiples trabajos en segundo plano: Has aprendido cómo iniciar múltiples tareas en segundo plano y cómo verificar su estado utilizando el comando
jobs.Traer trabajos al primer plano: Has descubierto cómo utilizar el comando
fgpara traer tareas en segundo plano al primer plano, ya sea el trabajo más reciente o un trabajo específico haciendo referencia a su número de trabajo.
Estas técnicas de control de trabajos son fundamentales para una multitarea eficiente en Linux. Te permiten:
- Ejecutar procesos que consumen mucho tiempo sin bloquear tu terminal
- Monitorear múltiples operaciones simultáneamente
- Cambiar entre tareas según sea necesario
- Gestionar tu flujo de trabajo de manera más efectiva
A medida que sigas trabajando con sistemas Linux, estos comandos se convertirán en herramientas valiosas en tus operaciones diarias, especialmente cuando trabajes con servidores, ejecutes scripts o gestiones múltiples procesos.



