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

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

Tenemos un comando de espera de Linux para esperar a que uno o más de un procese se complete en el sistema. El comando de espera versátil de Linux nos permite averiguar cuándo se completa un proceso específico. El estado de terminación se devolverá como resultado, lo que nos permitirá identificar si el proceso tiene éxito en la terminación o fallida por alguna otra razón. El comando de espera continúa ejecutándose mientras espera que se completen tareas de fondo específicas. 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.

Utilizamos el comando de espera para especificar cuándo el proceso de fondo de un script debe iniciar el procesamiento. En el siguiente script bash, hemos utilizado el comando echo que imprime la declaración "proceso de fondo", lo que significa que el proceso de fondo está procesando. Con este comando Echo, hemos usado el símbolo "&" que se usa para ejecutar un comando en segundo plano. Luego, hemos empleado nuevamente los dos comandos de eco que imprimen la declaración "primera tarea" y "segunda tarea".

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

#!/bin/bash
proceso de fondo de eco y
Echo Primera tarea
hacer eco de la segunda tarea
esperar
Echo tercera tarea

La salida del comando de espera mostró que después de la finalización de la primera tarea y la segunda tarea, se procesa la tercera tarea. El comando Wait genera la declaración "proceso de fondo" cuando las tareas de primera y segunda toman tiempo para completar.

Linux@virtualbox: ~ Bash ./Intento.mierda
Primera tarea
Segunda tarea
Proceso de fondo
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 el proceso único, estamos utilizando el comando de espera en el script bash para múltiples procesos. Cuando el comando de espera se usa con el indicador -n, solo espera el proceso inicial entre los procesos de fondo. El script bash se proporciona a continuación, donde primero implementamos los tres comandos de sueño establecidos con valores específicos. El comando del sueño se define con el signo "&" que ya hemos discutido anteriormente, lo que indica que los procesos de fondo se están ejecutando.

El primer comando de sueño indica que el proceso de fondo necesita "10" segundos para completar. El proceso de fondo necesita "5" segundos para su finalización y el tercer comando de sueño requiere "3" segundos para la ejecución del proceso de fondo. A continuación, se llama el comando Wait -N que solo espera el proceso más corto. Aquí, el proceso más corto tarda tres segundos en completarse entre los otros procesos. Cuando se complete el proceso más corto, se imprimirá la instrucción ECHO "completado el primer trabajo".

Después de eso, hemos implementado nuevamente el comando Wait -N. Esto volverá a esperar el proceso menos lento. Ahora, el proceso menos lento tarda cinco segundos, ya que se ejecuta el proceso de tiempo tres segundos. Después de esperar cinco segundos del proceso, se mostrará la próxima declaración de eco "Completando el próximo trabajo". El siguiente comando de WAIT 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 instrucción ECHO "completado todo el trabajo".

#!/bin/bash
dormir 10 y
dormir 5 y
dormir 3 y
esperar -n
echo "completado el primer trabajo."
esperar -n
echo "completado el siguiente trabajo."
esperar
Echo "completó todo el trabajo."

Los resultados del script bash de múltiples procesos con el comando de espera anterior se muestran en la siguiente pantalla de shell bash. La espera con los comandos de la opción -N se detiene durante 3 y 5 segundos, que es la cantidad de tiempo que tarda el primer y próximo trabajo en finalizar los comandos de espera y luego detener durante diez segundos, que es la cantidad de tiempo que lleva el fondo restante Procesos para terminar.

Linux@virtualbox: ~ Bash ./Intento.mierda
"Primer trabajo completado."
"Completó el próximo trabajo."
"Completó todo el trabajo."

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

Cuando estamos tratando con múltiples procesos en el script bash con el comando Wait, el ID de proceso es útil para identificar el proceso. Aquí en el script bash, hemos utilizado el comando echo para imprimir la declaración "process1 durante 3 segundos". Luego, usamos el y el operador "&&" para establecer otro comando que es el comando de sueño. El comando del sueño toma un valor de "3", que es el momento para que se complete el proceso de fondo. Luego, declaramos la variable "processID" que proporcionó un "$!" valor. El símbolo "$!"Obtiene la identificación del 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 Echo que imprime el "proceso1 durante 5 segundos" junto con el comando de sueño. El comando del sueño tarda cinco segundos para completar el segundo proceso de fondo. A continuación, imprimimos la hora actual utilizando la estructura de fecha y hora de la fiesta. Luego, el comando de espera se utiliza donde la variable "processID" se establece como argumento. El comando de espera ahora contiene el tiempo de espera de la variable processID, que es 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 entonces, la última declaración de eco se ejecutará. para obtener la última identificación del proceso de comando de ejecución.

#!/bin/bash
echo "Process1 por 3 segundos" && Sleep 3 &
ProcessID = $!
Echo "Process1 por 5 segundos" && Sleep 5 &
echo "hora actual $ (fecha +%t)"
esperar $ processid
Echo "Proceso1 Tiempo de terminación $ (Fecha +%T) con estado de salida $?"
esperar $!
Echo "Proceso2 Tiempo de terminación $ (Fecha +%T) con estado de salida $?"

La salida se mostró primero la finalización del proceso junto con el tiempo para su finalización. Luego, el proceso de hora actual se completa. Después de eso, se produjo la espera y luego se ejecutó el siguiente comando eco que mostró el valor de estado de salida cero junto con el tiempo de terminación. El estado de salida de la salida cero del valor representa que el proceso se termina correctamente. Por otra parte, la pausa ocurre para el momento en que el último proceso lleva completar y se mostrará la última declaración.

Linux@virtualbox: ~ Bash ./Intento.mierda
Proceso1 por 5 segundos
Proceso1 por 3 segundos
Hora actual 00:31:20
Process1 Tiempo de terminación 00:31:23 con estado de salida 0
Process2 Tiempo de terminación 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 de ejecución. Primero usamos el comando de espera para que el proceso único espere y luego hemos llamado al comando de espera para los múltiples procesos. Luego, se llama al comando de espera a través de la identificación del proceso para obtener la ID de proceso de múltiples procesos.