GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Comando Bash wait con ejemplos

Introducción

El bash wait command es un comando de Shell que espera a que se completen los procesos en ejecución en segundo plano y devuelve el estado de salida. A diferencia del comando de suspensión, que espera un tiempo específico, el wait El comando espera a que finalicen todas las tareas en segundo plano o algunas específicas.

Este tutorial explica la wait sintaxis de comandos y proporciona códigos de script bash de ejemplo.

Requisitos previos

  • Acceso a la línea de comando/terminal.
  • Privilegios de administrador (sudo).
  • Un editor de texto, como Vim o Nano.

Sintaxis del comando bash wait

Hay diferentes formas de usar esperar Comando en bash scripts. La siguiente tabla explica cada caso de uso.

Ejemplos de comandos de espera

Hay tres parámetros adicionales para saber cuando se trabaja con esperar en guiones bash:

1. El signo de y comercial (& ) después de un comando indica un trabajo en segundo plano.

2. $! obtiene el PID del último proceso en segundo plano. Almacene el PID anterior en una variable cuando trabaje con múltiples procesos en segundo plano.

3. $? imprime el estado de salida del último proceso.

Para ver cómo estos tres parámetros funcionan juntos, abra una ventana de terminal y ejecute:

sleep 10 &
echo $!
echo $?

El $! El parámetro almacena el PID del proceso en segundo plano, mientras que $? almacena el estado de salida. El estado de salida 0 indica que el comando finalizó con éxito.

Ejemplo de espera de proceso único

1. Comience abriendo la terminal y cree un proceso simple en segundo plano:

sleep 10 &

2. Confirme que el trabajo se está ejecutando en segundo plano con:

jobs -l

3. Usa el wait comando sin ningún parámetro para hacer una pausa hasta que se complete el proceso:

wait

El terminal espera a que finalice el proceso en segundo plano.

Después de 10 segundos (debido a sleep 10 ), la consola imprime un Listo mensaje.

Ejemplo de espera bash de proceso único

Utilice el wait comando para indicar en qué punto debe ejecutarse un proceso en segundo plano dentro de un script.

1. Por ejemplo, agregue el siguiente código en un editor de texto:

#!/bin/bash
echo Background process &
echo First message
echo Second message
wait
echo Third message

Si el proceso en segundo plano no finaliza el primer y el segundo proceso, wait El comando invoca una pausa para esperar a que se complete el proceso en segundo plano después del segundo proceso antes de continuar con el tercer proceso.

2. Guarde el script como single_process.sh . En la terminal, cambie los permisos para que el script sea ejecutable:

sudo chmod +x single_process.sh

3. Ejecute el script con:

./single_process.sh

El proceso en segundo plano se completa en cualquier momento antes de la wait comando, y la secuencia de comandos continúa.

Ejemplo de espera de procesos múltiples

1. Abra el editor de texto y agregue el siguiente script con múltiples procesos:

#!/bin/bash
sleep 10 &
sleep 15 &
sleep 5 &
echo $(date +%T)
wait 
echo $(date +%T)

El script imprime la hora actual antes y después de wait dominio. Sin ningún parámetro, el programa espera a que finalicen todos los procesos.

2. Guarde el script como test.sh y cerrar el archivo. A continuación, haga que el script sea ejecutable:

sudo chmod +x test.sh

3. Por último, ejecuta el programa con:

./test.sh

Dado que los procesos se ejecutan en segundo plano, los tres se completan en quince segundos.

4. Use el mismo script para probar los siguientes casos de uso:

  • Agregue el -n parámetro para <strong>wait</strong> . Solo se completa el proceso más rápido y el script finaliza en diez segundos.
  • Agregue la identificación del trabajo para indicar qué trabajo debe esperar el script. Por ejemplo, wait %1 pausas para el proceso 1 (sleep 10 ) para completar.

Múltiples procesos bash wait con ejemplo de PID

1. Cuando trabaje con varios procesos, utilice el PID para identificar un proceso. El siguiente script de ejemplo muestra un caso de uso único:

#!/bin/bash
echo "Process 1 lasts for 2s" && sleep 2 &
PID=$!
echo "Process 2 lasts for 3s" && sleep 3 &
echo "Current time $(date +%T)"
wait $PID
echo "Process 1 ended at time $(date +%T) with exit status $?"
wait $!
echo "Process 2 ended at time $(date +%T) with exit status $?"

2. Guarde el script como multi_wait.sh . Haga que el script sea ejecutable con:

sudo chmod +x multi_wait.sh

3. Ejecute el script para ver el resultado:

./multi_wait.sh

El script tarda dos segundos en completar el primer proceso (debido a sleep 2 ) y tres segundos para completar el segundo proceso. Los dos procesos se ejecutan simultáneamente y ambos se completan en tres segundos.


Ubuntu
  1. Comando fuente de Linux con ejemplos

  2. Comando wc Linux con ejemplos

  3. Tutorial de Bash HereDoc con ejemplos

  4. Comando Nohup con ejemplos

  5. '&&' vs. '&' con el comando 'test' en Bash

Bash Scripting - Comando Printf explicado con ejemplos

Comando de pared en Linux con ejemplos

Ordenar comando en Linux con ejemplos

Comando Usermod con ejemplos

Comando IP de Linux con ejemplos

Comando de espera en Linux explicado con ejemplos prácticos

    Comando Explicación
    wait Sin ningún parámetro, wait El comando espera a que finalicen todos los procesos en segundo plano antes de continuar con el script.
    wait <process or job ID> Un PID o ID de trabajo agregado espera a que finalice un proceso específico antes de continuar con el script.
    wait -n Espera a que solo se complete el siguiente proceso en segundo plano y devuelve un estado de salida.
    wait -f Terminar un programa primero espera a que finalice la tarea en segundo plano antes de salir.