Control de trabajos
100%

Procesos · Lección 11

Control de trabajos

Aprende cómo un shell interactivo gestiona trabajos en primer plano, en segundo plano y detenidos.

Los shells interactivos utilizan el control de trabajos para coordinar tuberías dentro de una sesión de terminal. Un trabajo puede contener un solo proceso o una tubería completa, normalmente agrupados en un grupo de procesos para que la terminal y el shell puedan tratarlos como una unidad.

Iniciar un trabajo en segundo plano

Añade & para iniciar una tubería de forma asíncrona:

$ sleep 1000 &
[1] 18420

El shell devuelve el prompt sin esperar a que termine el trabajo. Ejecutarlo en segundo plano no redirige automáticamente su salida, no lo desvincula de la terminal de control ni hace que sobreviva al cierre de la sesión. Redirige explícitamente la entrada y la salida cuando sea necesario, y utiliza un gestor de servicios, un planificador o un multiplexor de terminal para los trabajos que deban sobrevivir al shell interactivo.

Un trabajo en segundo plano que intenta leer de la terminal de control suele detenerse mediante SIGTTIN porque no pertenece al grupo de procesos en primer plano de la terminal.

¿Qué solicita a un shell interactivo un & al final?

Listar los trabajos del shell

La orden interna jobs muestra los trabajos conocidos por el shell actual:

$ jobs
[1]    Running    sleep 1000 &
[2]-   Running    sleep 1001 &
[3]+   Stopped    sleep 1002

El número entre corchetes es un identificador de trabajo del shell, no un PID. El prefijo % forma una especificación de trabajo como %1. El marcador + identifica el trabajo actual que muchas órdenes seleccionan cuando no reciben un operando; - identifica el trabajo anterior.

Como la tabla de trabajos pertenece a un único shell, el shell de otra terminal no puede normalmente mostrar ni referirse a estos trabajos mediante sus propias órdenes internas jobs, fg o bg.

¿Qué muestra la orden interna jobs?

Detener y continuar un trabajo

Mientras un trabajo está en primer plano, al pulsar Ctrl-Z la terminal suele enviar SIGTSTP a su grupo de procesos en primer plano. El shell recupera el control después de que el trabajo se detenga:

$ sleep 1002
^Z
[3]+  Stopped    sleep 1002

Continúa el trabajo actual detenido en segundo plano con:

$ bg

bg envía una señal de continuación y deja el trabajo fuera del primer plano de la terminal. Solo resulta útil para un trabajo detenido; una orden que ya se ejecuta en segundo plano no necesita reanudarse.

¿Qué hace bg %3 con el trabajo 3 detenido?

Mover un trabajo al primer plano

Utiliza fg con una especificación de trabajo para convertir un trabajo en el grupo de procesos en primer plano de la terminal y esperar a que termine:

$ fg %1

Sin un operando, fg suele seleccionar el trabajo actual marcado con +. Un trabajo detenido se continúa al pasar al primer plano.

¿Qué hace fg %1?

Enviar señales a un trabajo

Los shells permiten que kill acepte una especificación de trabajo:

$ kill -TERM %1

Normalmente, esto envía la señal al grupo de procesos del trabajo y no solo a un miembro de la tubería. Examina primero el trabajo seleccionado y utiliza SIGTERM antes de plantearte una medida forzosa. Las especificaciones de trabajo son sintaxis del shell; los scripts y las herramientas externas suelen trabajar con PID o identificadores de grupo de procesos verificados.

¿Qué operando se refiere al trabajo 1 del shell en vez de al proceso con PID 1?

Lección completada

Has completado Control de trabajos

Ahora puedes mover deliberadamente trabajos entre los estados controlados por el shell.

  • Utiliza & para iniciar un trabajo en segundo plano sin desvincularlo automáticamente.

  • Utiliza jobs para examinar la tabla de trabajos del shell actual.

  • Detén un trabajo con Ctrl-Z y continúalo en segundo plano con bg.

  • Devuelve un trabajo seleccionado a la terminal con fg.

  • Especifica los trabajos del shell mediante %JOB_ID al enviar señales.

Guarda tu progreso

Crea una cuenta gratuita para guardar esta lección y continuar en cualquier dispositivo.

Crear una cuenta gratuita
Volver a Procesos