Linux

Comando Bash Wait

Comando Bash Wait

Espere es un comando que espera a que se completen los trabajos dados y devuelve el estado de salida del comando esperado.

Desde el Espere El comando afecta el entorno de ejecución actual del shell, se implementa como un comando integrado en la mayoría de los shells.

En este artículo, exploraremos el Bash integrado Espere mando.

Intento Espere Comando #

La sintaxis general del Espere incorporado toma la siguiente forma:

esperar ID de [opciones] 

IDENTIFICACIÓN es el proceso o la identificación del trabajo. Si no IDENTIFICACIÓN se especifica, el comando espera hasta que se completen todos los trabajos secundarios en segundo plano.

La Espere comando devuelve el estado de salida del último comando esperado.

Por ejemplo, para esperar un proceso en segundo plano con PID 7654, usarías:

espera 7654

Cuando se dan varios procesos, el comando espera a que se completen todos los procesos.

Los trabajos se especifican utilizando la especificación del trabajo ("jobpec"), que es una forma de referirse a los procesos que componen el trabajo. Una especificación de trabajo comienza con un símbolo de porcentaje seguido del número de trabajo (%norte). Aquí hay un ejemplo:

Ejecute un comando en segundo plano:

rsync -a / home / tmp / home y

La identificación del trabajo de shell (entre corchetes) y la identificación del proceso se mostrarán en su terminal:

[2] 54377 

Para esperar el trabajo, ejecute el Espere comando seguido de la especificación del trabajo:

espera% 2

Cuando se invoca con el -norte opción, el comando espera solo a que se complete un solo trabajo de los pids o especificaciones de trabajo dados y devuelve su estado de salida. Si no se proporcionan argumentos, espera -n espera a que se complete cualquier trabajo en segundo plano y devuelva el estado de salida del trabajo.

esperar -n 45432 54346 76573

En el ejemplo anterior, espera -n solo imprime el estado de devolución del trabajo que sale primero; no muestra el PID del trabajo. Si desea obtener el pid de trabajo o la especificación de trabajo para el que se devuelve el estado de salida, use el -pag opción para asignarlo a una variable:

esperar -p job_id -n 45432 54346 76573

-pag La opción se introdujo en Bash 5.1. Si usa una versión anterior de Bash, obtendrá un error de "opción no válida".

La -F la opción dice Espere esperar a que cada pid o especificación de trabajo termine realmente antes de devolver su código de salida, en lugar de regresar cuando se cambia el estado del trabajo. Esta opción solo es válida cuando el control de trabajos está habilitado. De forma predeterminada, el control de trabajos está habilitado solo para avisos interactivos.

Ejemplos #

Espere se utiliza normalmente en scripts de shell que generan procesos secundarios que se ejecutan en paralelo.

Para ilustrar cómo funciona el comando, cree el siguiente script:

#!/ bin / bash dormir 30 & process_id = $! echo "PID: $ process_id" espera $ process_id echo "Estado de salida: $?" 

Expliquemos el código línea por línea:

  1. La primera línea se llama shebang y le dice al sistema operativo qué intérprete utilizar para analizar el resto del archivo.
  2. Estamos usando el dormir comando para emular un proceso en segundo plano que requiere mucho tiempo.
  3. PS! es una variable interna de Bash que almacena el PID del último trabajo ejecutado en segundo plano. En este ejemplo, ese es el PID del dormir mando. Estamos almacenando el PID en una variable (identificacion de proceso).
  4. Imprime el número PID.
  5. El PID se pasa al Espere comando que espera hasta que el dormir el comando se completa.
  6. Imprime el estado de salida del Espere mando. PS? es una variable interna de Bash que mantiene el estado de salida del último comando ejecutado.

Si ejecuta el script, imprimirá algo como esto:

PID: 36353 Estado de salida: 0 

Aquí un ejemplo usando el -norte opción:

#!/ bin / bash sleep 3 & sleep 30 & sleep 5 & wait -n echo "Primer trabajo completado."esperar eco" Todos los trabajos completados." 

Cuando se ejecuta el script, genera 3 procesos en segundo plano. espera -n espera hasta que se completa el primer trabajo y se imprime la declaración de eco. Espere espera a que se completen todos los trabajos secundarios en segundo plano.

primer trabajo completado todos los trabajos completados 

El último ejemplo explica el -F opción. Abra la terminal y ejecute:

dormir 3600 y
[1] 46671 

Espere el proceso:

espera 46671

Abra otra terminal y detenga el proceso con el matar mando:

matar -STOP 46671

Una vez que se cambia el estado del proceso, Espere El comando completará y devolverá el código de salida del proceso.

Ahora, repita los mismos pasos, pero esta vez use esperar -f $ pid:

dormir 3600 yespera -f 46671

Detenga el proceso desde la otra terminal:

matar -STOP 46671

Esta vez el Espere el comando no se completará. Funcionará hasta que dormir el proceso termina.

Conclusión #

La Espere El comando espera a que se completen los trabajos especificados y devuelve el código de salida del trabajo.

Si tiene alguna pregunta o comentario, no dude en dejar un comentario.

El botón de clic izquierdo del mouse no funciona en Windows 10
Si está utilizando un mouse dedicado con su computadora portátil o computadora de escritorio, pero el el botón izquierdo del mouse no funciona en Wind...
El cursor salta o se mueve aleatoriamente mientras escribe en Windows 10
Si descubre que el cursor del mouse salta o se mueve por sí solo, automáticamente, de manera aleatoria mientras escribe en una computadora portátil o ...
Cómo invertir la dirección de desplazamiento del mouse y los paneles táctiles en Windows 10
Ratón y Panel táctils no solo facilitan la informática, sino que también hacen que sea más eficiente y requieran menos tiempo. No podemos imaginar una...