Comando Wait en Linux con ejemplos

linux comando wait

Wait es un comando de la shell que se espera para un determinado proceso de completar, a continuación, devuelve el estado de salida. Wait comando se utiliza para esperar, ya sea particular proceso de IDENTIFICACIÓN y la IDENTIFICACIÓN del trabajo y la devolución de su terminación de estado.

Cuando la ejecución de la gran flujo de automatización necesitamos para hacer unos módulos deben esperar hasta que el anterior conjunto de módulo de completar y devolver los datos canalizado en próximos módulos, en este caso podemos utilizar el comando Wait hasta que se realice el módulo anterior.

Cómo Wait comando funciona

Wait comando que se utiliza para supervisar el proceso anterior, depende del proceso anterior estado de la devolución se le devolverá el estado de salida. Por ejemplo, si queremos esperar a completar un determinado proceso de IDENTIFICACIÓN de 13245, deberíamos usar “Wait 13245” cuando el proceso 13245 completa Wait comando de retorno de los valores de retorno de 13245 estado de salida.

– Wait PID (PID – Proceso de IDENTIFICACIÓN de un comando, por lo que la utilidad es esperar a la terminación).
– Wait JID (JID – ID de Trabajo que identifica un proceso en segundo plano que esperar, aplicable sólo para las invocaciones de Wait en el shell actual entorno de ejecución).

El estado de salida de valor de comando wait depende de la última PID/JID especificado. Cuando el proceso termina de forma anormal, a continuación, el estado de salida será mayor que 128.

Comando Wait sale con el valor 0 cuando se llama con que ningún niño se proceso y de todos los Identificadores de proceso son conocidos por el shell actual han terminado. Si el comando wait detecta cualquier error, a continuación, devuelve cualquier valor de 1 a 126. Si el último id de proceso es desconocido, a continuación, Wait comando de las salidas con valor 127.

Wait Ejemplos De Comandos

Veamos un par de scripts para entender cómo Wait comando funciona.

Ejemplo: 1 – Secuencia de comandos con el comando Wait

Tenemos dos scripts llamados ‘foo.sh’ y ‘bar.sh’ script. ‘Foo.sh’ secuencia de comandos de impresión entre los números 1 a 5 y ‘bar.sh el guión va a llamar a la foo.sh y ejecutar en el fondo, obtener el PID de foo.sh y espere a que se complete, una vez que se complete va a empezar ‘bar.sh’ bucle y completa.

Script – foo.sh

#!/bin/bash
for i in 1 2 3 4 5
do
      echo “foo.sh – Looping … number $i”
done

Script – bar.sh

#!/bin/bash
echo “Started bar.sh”
echo “Started foo.sh”
./foo.sh &
pid=$!
wait $pid
echo “Completed foo.sh”

for I in 1 2 3 4 5
do
        echo “bar.sh – Looping … number $i”
done

Resultado

Started bar.sh
Started foo.sh
foo.sh – Looping .. number 1
foo.sh – Looping .. number 2
foo.sh – Looping .. number 3
foo.sh – Looping .. number 4
foo.sh – Looping .. number 5
Completed foo.sh
bar.sh – Looping .. number 1
bar.sh – Looping .. number 2
bar.sh – Looping .. number 3
bar.sh – Looping .. number 4
bar.sh – Looping .. number 5
Completed bar.sh
$

Ejemplo 2 – Script sin necesidad de Wait comando

Tenemos dos scripts llamados ‘foo.sh’ y ‘bar.sh’ script. ‘foo.sh’ secuencia de comandos de impresión entre los números 1 a 5 y bar.sh secuencia de comandos de llamar a la foo.sh y que se ejecute en segundo plano, pero no va a esperar foo.sh para completar y ejecutar secuencias de comandos.

Script – foo.sh

#!/bin/bash
for i in 1 2 3 4 5
do
      echo “foo.sh – Looping … number $i”
done

Script – bar.sh

#!/bin/bash
echo “Started bar.sh”
echo “Started foo.sh”
./foo.sh &
echo “Completed foo.sh”

for I in 1 2 3 4 5
do
        echo “bar.sh – Looping … number $i”
done

Resultado

Started bar.sh
Started foo.sh
Completed foo.sh
bar.sh – Looping .. number 1
bar.sh – Looping .. number 2
bar.sh – Looping .. number 3
bar.sh – Looping .. number 4
bar.sh – Looping .. number 5
Completed bar.sh
$
foo.sh – Looping .. number 1
foo.sh – Looping .. number 2
foo.sh – Looping .. number 3
foo.sh – Looping .. number 4
foo.sh – Looping .. number 5
$

Ejemplo: 3 – Secuencia de comandos con el comando wait & estado de la devolución de

‘bar.sh el guión va a llamar a la foo.sh y que se ejecute en segundo plano, obtener el PID de foo.sh y espere a que se complete, una vez que se completa va a empezar bar.sh bucle y se completa, Finalmente, devolver el código de salida de foo.sh secuencia de comandos.

Script – foo.sh (estado de Salida = 0)

Script – foo.sh

#!/bin/bash
for i in 1 2 3 4 5
do
      echo “foo.sh – Looping … number $i”
done

Script – bar.sh

#!/bin/bash
./foo.sh &
BPID=$!
wait $BPID
stat=$?

if ( $stat –eq 0 )
then
       echo “Exit status - $stat”
else
        echo “Exit status - $stat”
fi

Resultado

foo.sh – Looping .. number 1
foo.sh – Looping .. number 2
foo.sh – Looping .. number 3
foo.sh – Looping .. number 4
foo.sh – Looping .. number 5
Exit status - 0
$

Script – foo.sh (estado de Salida = NO igual a Cero)

Script – foo.sh

#!/bin/bash
for i in 1 2 3 4 5
do
      iiecho “foo.sh – Looping … number $i”
done

Script – bar.sh

#!/bin/bash
./foo.sh &
BPID=$!
wait $BPID
stat=$?

if ( $stat –eq 0 )
then
       echo “Exit status - $stat”
else
        echo “Exit status - $stat”
fi

Resultado

./foo.sh: line 4: iiecho: command not found
./foo.sh: line 4: iiecho: command not found
./foo.sh: line 4: iiecho: command not found
./foo.sh: line 4: iiecho: command not found
./foo.sh: line 4: iiecho: command not found
Exit status – 127
$

Conclusión

De espera y el Sueño de ambos se basan en el tiempo de llamadas de sistema en el sistema Operativo. Vamos a ver la diferencia entre la espera y el sueño de comandos.

Wait: Cuando el usuario quiere detener el proceso actual y libera todos los recursos que se mantenga por el proceso y espera a que algún otro proceso a ejecutar. Necesitamos usar notificar para que este proceso sea consciente de que inicie la ejecución de nuevo tras la finalización de otro proceso.

El sueño: Este sistema de llamada se utiliza cuando el usuario quiere detener el proceso actual por algún tiempo. Mantiene los bloqueos de mantener en recursos hasta la hora de dormir es más y de nuevo comienza la ejecución del proceso. Aquí el proceso de control a lo largo de la ejecución. e.g me ejecutado algún comando en bash y quiero dormir por algún tiempo ya, esperando alguna salida del comando ejecutado el cual será utilizado en la ejecución del proceso actual.