¿Cómo esperar a que se complete un proceso específico en Linux?

Tenemos un comando de espera de Linux para esperar a que se complete uno o más procesos en el sistema. El versátil comando de espera de Linux nos permite saber cuándo se completa un proceso específico. Como resultado, se devolverá el estado de finalización, lo que nos permitirá identificar si el proceso finalizó con éxito o falló por algún otro motivo. El comando de espera continúa ejecutándose mientras espera que se completen tareas específicas en segundo plano. El comando de espera de Linux se usa en los casos de uso a continuación para mostrar cómo funciona.

Ejemplo # 1: Uso de un comando de espera para el proceso único de Bash.

Usamos el comando de espera para especificar cuándo debe comenzar a procesarse el proceso en segundo plano de un script. En el siguiente script bash, hemos utilizado el comando echo que imprime la declaración «Proceso en segundo plano», lo que significa que el proceso en segundo plano se está procesando. Con este comando de eco, hemos usado el símbolo «&» que se usa para ejecutar un comando en segundo plano. Luego, nuevamente hemos empleado los dos comandos de eco que imprimen la declaración «Primera tarea» y «segunda tarea».

Después de eso, invocamos la espera que hará una pausa para esperar a que finalice el proceso en segundo plano después del segundo proceso antes de pasar al tercer proceso. La tercera tarea se procesará al finalizar el proceso en segundo plano, que finalizará en cualquier momento.

#!/bin/bash

echo Proceso en segundo plano y
eco Primera tarea
eco Segunda tarea
esperar
eco Tercera tarea

El resultado del comando de espera mostró que después de completar la primera y la segunda tarea, se procesa la tercera tarea. El comando de espera genera la declaración «Proceso en segundo plano» cuando la primera y la segunda tarea tardan en completarse.

Linux @ VirtualBox:~ bash . / Bash.sh

Primera tarea
Segunda tarea
Proceso en segundo plano

Tercera tarea

Ejemplo # 2: Uso de un comando de espera para procesos múltiples de Bash.

Como el script bash anterior usa el comando de espera para un solo proceso, estamos usando el comando de espera en el script bash para que se realicen múltiples procesos. Cuando el comando de espera se usa con el indicador -n, solo espera el proceso inicial entre los procesos en segundo plano. El script bash se proporciona a continuación, donde implementamos por primera vez los tres comandos de suspensión establecidos con valores específicos. El comando de suspensión se define con el signo «&» que ya hemos discutido anteriormente, lo que indica que los procesos en segundo plano se están ejecutando.

El primer comando de suspensión indica que el proceso en segundo plano necesita «10» segundos para completarse. El proceso en segundo plano necesita «5» segundos para completarse y el tercer comando de suspensión requiere «3» segundos para la ejecución del proceso en segundo plano. A continuación, se llama al comando wait -n, que solo espera el proceso más corto. Aquí, el proceso más corto tarda tres segundos en completarse entre los demás procesos. Cuando se complete el proceso más corto, se imprimirá la declaración de eco «Completado el primer trabajo».

Después de eso, hemos desplegado nuevamente el comando wait -n. Esto nuevamente esperará el proceso que consume menos tiempo. Ahora, el proceso que consume menos tiempo toma cinco segundos mientras se ejecuta el proceso de tres segundos. Después de esperar cinco segundos del proceso, se mostrará la siguiente declaración de eco «próximo trabajo completado». El siguiente comando de espera no usa ningún indicador, lo que significa que este comando de espera esperará a que todos los procesos se completen primero y luego muestra la declaración de eco «Completado todo el trabajo».

#!/bin/bash

dormir 10 &
dormir 5 &
dormir 3 &
esperar -n
echo «Primer trabajo completado».
wait -n
echo «Próximo trabajo completado».
esperar
eco «Completado todo el trabajo».

Los resultados de la secuencia de comandos bash de varios procesos con el comando de espera anterior se muestran en la siguiente pantalla de shell bash. Los comandos de espera con la opción -n hacen una pausa de 3 y 5 segundos, que es la cantidad de tiempo que tardan el primer trabajo y el siguiente en finalizar los comandos de espera, luego hacen una pausa de diez segundos, que es la cantidad de tiempo que tarda el resto del trabajo en segundo plano. procesos para terminar.

Linux @ VirtualBox:~ bash . / Bash.sh

«Primer trabajo completado».
«Próximo trabajo completado».
«Completado todo el trabajo».

Ejemplo # 3: Uso de un comando de espera para procesos múltiples de Bash con ID de proceso.

Cuando estamos tratando con múltiples procesos en el script bash con el comando de espera, la identificación del proceso es útil para identificar el proceso. Aquí, en el script bash, hemos utilizado el comando echo para imprimir la declaración «Proceso1 durante 3 segundos». Luego, usamos el operador AND «&&» para configurar otro comando que es el comando de suspensión. El comando de suspensión toma un valor de «3», que es el tiempo para que se complete el proceso en segundo plano. Luego, declaramos la variable «ProcessID» que proporcionó un «$!» valor. El símbolo “$!” obtiene el ID de proceso del último comando ejecutado. El último comando ejecutado que toma «3» segundos se almacena en la variable «ProcessID».

Ahora, hemos especificado otro comando de eco que imprime el «Proceso1 durante 5 segundos» junto con el comando de suspensión. El comando de suspensión tarda cinco segundos en completar el segundo proceso en segundo plano. A continuación, imprimimos la hora actual usando la estructura DateTime de bash. Luego, se utiliza el comando de espera donde la variable «ProcessID» se establece como argumento. El comando de espera ahora contiene el tiempo de espera de la variable processID, que es de tres segundos.

Después de tres segundos, se completará el proceso restante del script bash. Tenga en cuenta que tenemos otro comando de espera que se pasa con el signo «$!» como argumento Luego, se ejecutará la última declaración de eco. para obtener el ID del proceso del último comando de ejecución.

#!/bin/bash
echo «Process1 durante 3 segundos» && sleep 3 &
ProcessID = $!
echo «Proceso1 durante 5 segundos» && sleep 5 &
echo «Hora actual $(fecha +%T) »
espera $ProcessID
echo «¿Hora de finalización del proceso1 $(fecha +%T) con estado de salida $?»
espera $!
echo «¿Tiempo de terminación del proceso 2 $(fecha +%T) con estado de salida $?»

La salida mostraba primero la finalización del proceso junto con el tiempo de finalización. Entonces, el proceso de tiempo actual se completa. Después de eso, se produjo la espera y luego se ejecutó el siguiente comando de eco que mostró el valor de estado de salida cero junto con el tiempo de finalización. El estado de salida de valor cero representa que el proceso finalizó con éxito. Por otra parte, se produce una pausa durante el tiempo que tarda en completarse el último proceso y se mostrará la última instrucción.

Linux @ VirtualBox:~ bash . / Bash.sh

Proceso1 durante 5 segundos

Proceso1 durante 3 segundos Hora

actual 00: 31 : 20 Tiempo de
finalización del proceso 1 00: 31 : 23 con estado de salida 0 Tiempo
de finalización del proceso 2 00: 31 : 25 con estado de salida 0

 Conclusión

El artículo proporciona una forma de esperar a que se complete un proceso específico en Linux. Hemos usado el comando de espera para esperar el proceso en ejecución. Primero usamos el comando de espera para que el proceso único espere y luego llamamos al comando de espera para los múltiples procesos. Luego, se llama al comando de espera sobre la ID del proceso para obtener la ID del proceso de múltiples procesos.