Gestión de trabajos en segundo plano

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo gestionar trabajos en segundo plano en Linux utilizando varios comandos. Descubrirás cómo ejecutar procesos en segundo plano, monitorear su estado y controlarlos. Este conocimiento es crucial para una multitarea eficiente en un entorno Linux, ya que te permite ejecutar múltiples tareas simultáneamente sin bloquear tu terminal.

Logros

Al final de este laboratorio, podrás:

  • Ejecutar comandos en segundo plano utilizando el operador &
  • Listar y monitorear trabajos en segundo plano utilizando el comando jobs
  • Traer trabajos en segundo plano al primer plano utilizando el comando fg
  • Detener trabajos en segundo plano utilizando el comando kill
  • Comprender la naturaleza específica del terminal de los trabajos en segundo plano

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/ProcessManagementandControlGroup(["Process Management and Control"]) linux(("Linux")) -.-> linux/CompressionandArchivingGroup(["Compression and Archiving"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux/BasicSystemCommandsGroup -.-> linux/sleep("Execution Delaying") linux/FileandDirectoryManagementGroup -.-> linux/find("File Searching") linux/ProcessManagementandControlGroup -.-> linux/jobs("Job Managing") linux/ProcessManagementandControlGroup -.-> linux/fg("Job Foregrounding") linux/ProcessManagementandControlGroup -.-> linux/kill("Process Terminating") linux/ProcessManagementandControlGroup -.-> linux/bg_process("Background Management") linux/CompressionandArchivingGroup -.-> linux/tar("Archiving") linux/RemoteAccessandNetworkingGroup -.-> linux/ping("Network Testing") subgraph Lab Skills linux/sleep -.-> lab-43{{"Gestión de trabajos en segundo plano"}} linux/find -.-> lab-43{{"Gestión de trabajos en segundo plano"}} linux/jobs -.-> lab-43{{"Gestión de trabajos en segundo plano"}} linux/fg -.-> lab-43{{"Gestión de trabajos en segundo plano"}} linux/kill -.-> lab-43{{"Gestión de trabajos en segundo plano"}} linux/bg_process -.-> lab-43{{"Gestión de trabajos en segundo plano"}} linux/tar -.-> lab-43{{"Gestión de trabajos en segundo plano"}} linux/ping -.-> lab-43{{"Gestión de trabajos en segundo plano"}} end

Ejecutar un comando en segundo plano

Comencemos ejecutando un comando simple en segundo plano.

  1. Abre tu terminal. Debes estar en el directorio /home/labex/project. Si no lo estás, puedes cambiar a este directorio escribiendo:

    cd /home/labex/project
  2. Usaremos el comando sleep para simular un proceso de larga duración. Ejecuta el siguiente comando:

    sleep 600 &

    El comando sleep pausa durante un número especificado de segundos (en este caso, 600 segundos o 10 minutos). El & al final le dice a Linux que ejecute este comando en segundo plano.

  3. Después de ejecutar este comando, verás una salida similar a esta:

    [1] 1234

    Esta salida muestra dos piezas importantes de información:

    • [1] es el número de trabajo. Se utiliza para referirse a este trabajo en segundo plano específico.
    • 1234 es el ID de proceso (PID, por sus siglas en inglés). Este es un identificador único para el proceso en ejecución.
  4. Notarás que inmediatamente obtienes de vuelta el indicador de comando. Esto se debe a que el proceso se está ejecutando en segundo plano, lo que te permite continuar usando tu terminal.

  5. Ahora, veamos el estado de nuestro trabajo en segundo plano:

    jobs

    Este comando lista todos los trabajos en segundo plano actuales. Deberías ver una salida como esta:

    [1]+  Running                 sleep 600 &

    Esto te dice que el trabajo número 1 está en ejecución y que es el comando sleep 600 que acabamos de iniciar.

  6. Nota importante: Los trabajos en segundo plano son específicos de la sesión de terminal en la que se iniciaron. Si abres una nueva ventana o pestaña de terminal, ejecutar jobs allí no mostrará los trabajos en segundo plano de tu terminal original. Este es un concepto clave para entender cómo funcionan los trabajos en segundo plano en Linux.

Ejecutar múltiples trabajos en segundo plano

Ahora que hemos ejecutado un trabajo en segundo plano, intentemos ejecutar múltiples trabajos simultáneamente. Usaremos una combinación de diferentes comandos para demostrar la versatilidad de los trabajos en segundo plano.

  1. Comencemos algunos trabajos más en segundo plano. Ingresa estos comandos uno después de otro:

    ping -c 100 google.com > ping_results.txt &
    find /home -name "*.log" > log_files.txt &
    sleep 1200 &

    Cada uno de estos comandos iniciará un nuevo trabajo en segundo plano. Verás un número de trabajo y un PID para cada uno.

  2. Ahora, veamos el estado de todos nuestros trabajos en segundo plano:

    jobs

    Deberías ver una salida que enumere los cuatro trabajos (incluyendo el del Paso 1):

    [1]   Running                 sleep 600 &
    [2]   Running                 ping -c 100 google.com > ping_results.txt &
    [3]-  Running                 find /home -name "*.log" > log_files.txt &
    [4]+  Running                 sleep 1200 &

    El + junto al trabajo 4 indica que este es el trabajo en segundo plano más recientemente iniciado. El - junto al trabajo 3 indica que este se convertiría en el trabajo actual si el trabajo 4 terminara.

  3. Observa cómo puedes iniciar múltiples trabajos en segundo plano rápidamente y tu terminal sigue respondiendo a otros comandos.

Traer un trabajo en segundo plano al primer plano

A veces, es posible que desees traer un trabajo en segundo plano al primer plano, ya sea para interactuar con él o para ver su salida. Aprendamos cómo hacer esto.

  1. Primero, lista tus trabajos actuales:

    jobs

    Esto actualiza tu vista de lo que se está ejecutando actualmente en segundo plano.

  2. Traeremos uno de los trabajos de larga duración al primer plano. Elige un número de trabajo de la lista (digamos que es el trabajo número 3, pero utiliza cualquier número que corresponda a un trabajo que todavía esté en ejecución en tu lista). Para traerlo al primer plano, utiliza el comando fg seguido del número de trabajo:

    fg %3

    El %3 se refiere al número de trabajo. El símbolo % le dice a la shell que estás refiriéndote a un número de trabajo, no a un ID de proceso (PID).

  3. Después de ejecutar este comando, verás el comando en ejecución en el primer plano y tu terminal se "bloqueará" hasta que se complete o lo detengas.

  4. Para detener el trabajo y recuperar el control de tu terminal, presiona Ctrl+C. Esto envía una señal de interrupción al proceso en primer plano actual.

  5. Veamos nuestros trabajos nuevamente:

    jobs

    Deberías ver que el trabajo que trajiste al primer plano ya no está en la lista porque lo detenimos.

Detener un trabajo en segundo plano

Ahora, aprendamos cómo detener un trabajo en segundo plano sin traerlo al primer plano.

  1. Primero, lista tus trabajos actuales:

    jobs

    Esto te muestra qué trabajos todavía están en ejecución.

  2. Detendremos uno de los trabajos en segundo plano restantes. Elige un número de trabajo de la lista (digamos que es el trabajo número 2, pero utiliza cualquier número que corresponda a un trabajo que todavía esté en ejecución en tu lista). Para detenerlo, usamos el comando kill seguido del número de trabajo:

    kill %2

    El %2 se refiere al número de trabajo que has elegido. Nuevamente, el símbolo % indica que estamos refiriéndonos a un número de trabajo.

  3. El comando kill envía una señal de terminación al trabajo especificado. Por defecto, envía una señal que permite que el proceso se apague de forma ordenada.

  4. Vuelve a comprobar los trabajos:

    jobs

    Deberías ver que el trabajo que has eliminado ya no está en la lista. Esto confirma que se ha terminado correctamente.

Usar trabajos en segundo plano con otros comandos

Ahora que hemos practicado con varios comandos, intentemos usar trabajos en segundo plano con otro comando práctico.

  1. Usaremos el comando tar para crear un archivo comprimido de tu directorio de usuario en segundo plano:

    tar -czf home_backup.tar.gz /home/labex &

    Este comando crea un archivo tar comprimido de tu directorio de usuario.

  2. Verás un número de trabajo y un PID, al igual que con nuestros comandos anteriores.

  3. Comprueba el estado del trabajo:

    jobs

    Deberías ver el comando tar listado como un trabajo en ejecución.

  4. Mientras se está ejecutando, puedes continuar usando tu terminal para otras tareas. ¡Esta es la potencia de los trabajos en segundo plano!

  5. Después de un tiempo, comprueba si el comando se ha completado:

    jobs

    Si ya no está en la lista, ha terminado.

  6. Ahora, verifiquemos que se haya creado el archivo:

    ls -l home_backup.tar.gz

    Esto mostrará los detalles del archivo si se ha creado correctamente.

Resumen

En este laboratorio, has aprendido habilidades esenciales para gestionar trabajos en segundo plano en Linux:

  1. Ejecutar comandos en segundo plano utilizando el operador &
  2. Listar y monitorear trabajos en segundo plano con el comando jobs
  3. Traer trabajos en segundo plano al primer plano con fg
  4. Detener trabajos en segundo plano utilizando kill
  5. Aplicar estos conceptos a escenarios prácticos, como diagnósticos de red, búsquedas de archivos y creación de archivos comprimidos

También has aprendido un concepto importante: los trabajos en segundo plano son específicos de la sesión de terminal en la que se iniciaron. Esto significa que cada ventana o pestaña de terminal mantiene su propio conjunto de trabajos en segundo plano.

Estas habilidades te ayudarán a realizar múltiples tareas de manera eficiente en un entorno Linux, lo que te permitirá ejecutar múltiples procesos simultáneamente y gestionarlos de manera efectiva. Recuerda, los trabajos en segundo plano son especialmente útiles para tareas de larga duración que no requieren interacción constante, liberando tu terminal para otras tareas.