Índice

Gestión de un proceso en segundo plano

El comando wait permite al shell esperar la finalización de un proceso ejecutado en segundo plano.

Sintaxis

Esperar la finalización del proceso cuyo PID se pasa como argumento:

wait pid1

Esperar la finalización de todos los procesos ejecutados en segundo plano desde el shell actual:

wait

ksh  

bash  

Esperar la finalización del proceso cuyo número de job se pasa como argumento:

wait %job

Ejemplos

El comando find se ejecuta en segundo plano. Tiene el PID 13415:

$ find / -name passwd 1> /tmp/res 2> /dev/null&  
[1] 13415 
$ jobs 
[1]+  Running   find / -name passwd >/tmp/res 2>/dev/null &

El shell se duerme esperando la finalización del proceso 13415:

$ wait 13415 # o wait %1

El shell se despierta cuando el proceso 13415 ha finalizado:

[1]+  Exit 1      find / -name passwd >/tmp/res 2>/dev/null 
$

El PID del último comando ejecutado en segundo plano se encuentra en la variable especial $!.

El script esperaproc.sh ejecuta una copia de seguridad en segundo plano. Durante su ejecución, el shell realiza otras acciones. Después espera el final de la copia antes de realizar su verificación:

$ nl esperaproc.sh 
     1  #! /usr/bin/ksh 
  
     2  # Ejecución de un comando de copia de seguridad en segundo 
plano 
     3  find / | cpio -ocvB > /dev/rmt/0 & 
     4  echo "El ...