GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Commande Bash wait avec exemples

Présentation

Le bash wait La commande est une commande Shell qui attend la fin des processus en cours d'exécution en arrière-plan et renvoie l'état de sortie. Contrairement à la commande sleep, qui attend un temps spécifié, la commande wait la commande attend la fin de toutes les tâches d'arrière-plan ou de certaines tâches spécifiques.

Ce didacticiel explique l'wait syntaxe de commande et fournit des exemples de codes de script bash.

Prérequis

  • Accès à la ligne de commande/au terminal.
  • Privilèges d'administrateur (sudo).
  • Un éditeur de texte, tel que Vim ou Nano.

syntaxe de la commande bash wait

Il existe différentes façons d'utiliser le attente commande dans les scripts bash. Le tableau ci-dessous explique chaque cas d'utilisation.

Commande Explication
wait Sans aucun paramètre, le wait La commande attend que tous les processus d'arrière-plan soient terminés avant de continuer le script.
wait <process or job ID> Un PID ou un ID de travail ajouté attend la fin d'un processus spécifique avant de continuer le script.
wait -n Attend uniquement la fin du processus d'arrière-plan suivant et renvoie un état de sortie.
wait -f La fin d'un programme attend d'abord la fin de la tâche en arrière-plan avant de quitter.

Exemples de commandes d'attente

Il y a trois paramètres supplémentaires à connaître lorsque vous travaillez avec wait dans les scripts bash :

1. L'esperluette (& ) après qu'une commande indique une tâche en arrière-plan.

2. $! récupère le PID du dernier processus d'arrière-plan. Stockez le PID précédent dans une variable lorsque vous travaillez avec plusieurs processus d'arrière-plan.

3. $? imprime l'état de sortie du dernier processus.

Pour voir comment ces trois paramètres fonctionnent ensemble, ouvrez une fenêtre de terminal et exécutez :

sleep 10 &
echo $!
echo $?

Le $! paramètre stocke le PID du processus d'arrière-plan, tandis que $? stocke le statut de sortie. Le statut de sortie 0 indique que la commande s'est terminée avec succès.

Exemple d'attente de processus unique

1. Commencez par ouvrir le terminal et créez un processus d'arrière-plan simple :

sleep 10 &

2. Confirmez que la tâche s'exécute en arrière-plan avec :

jobs -l

3. Utilisez le wait commande sans aucun paramètre pour faire une pause jusqu'à la fin du processus :

wait

Le terminal attend la fin du processus d'arrière-plan.

Après 10 secondes (en raison de sleep 10 ), la console imprime un Terminé message.

Exemple d'attente bash à processus unique

Utilisez le wait commande pour indiquer à quel moment un processus d'arrière-plan doit s'exécuter à l'intérieur d'un script.

1. Par exemple, ajoutez le code suivant dans un éditeur de texte :

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

Si le processus d'arrière-plan ne termine pas le premier et le deuxième processus, le wait La commande invoque une pause pour attendre que le processus d'arrière-plan se termine après le deuxième processus avant de passer au troisième processus.

2. Enregistrez le script sous single_process.sh . Dans le terminal, modifiez les autorisations pour rendre le script exécutable :

sudo chmod +x single_process.sh

3. Exécutez le script avec :

./single_process.sh

Le processus d'arrière-plan se termine à tout moment avant l'wait commande, et le script continue.

Exemple d'attente de plusieurs processus

1. Ouvrez l'éditeur de texte et ajoutez le script suivant avec plusieurs processus :

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

Le script imprime l'heure actuelle avant et après le wait commande. Sans aucun paramètre, le programme attend que tous les processus soient terminés.

2. Enregistrez le script sous test.sh et fermez le fichier. Ensuite, rendez le script exécutable :

sudo chmod +x test.sh

3. Enfin, lancez le programme avec :

./test.sh

Étant donné que les processus s'exécutent en arrière-plan, tous les trois sont terminés en quinze secondes.

4. Utilisez le même script pour tester les cas d'utilisation suivants :

  • Ajoutez le -n paramètre pour <strong>wait</strong> . Seul le processus le plus rapide se termine et le script se termine en dix secondes.
  • Ajoutez l'ID de tâche pour indiquer pour quelle tâche le script doit attendre. Par exemple, wait %1 pauses pour le processus 1 (sleep 10 ) pour terminer.

Plusieurs processus bash wait avec exemple PID

1. Lorsque vous travaillez avec plusieurs processus, utilisez le PID pour identifier un processus. L'exemple de script ci-dessous affiche un seul cas d'utilisation :

#!/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. Enregistrez le script sous multi_wait.sh . Rendez le script exécutable avec :

sudo chmod +x multi_wait.sh

3. Exécutez le script pour voir le résultat :

./multi_wait.sh

Le script prend deux secondes pour terminer le premier processus (en raison de sleep 2 ) et trois secondes pour terminer le deuxième processus. Les deux processus sont exécutés simultanément et se terminent tous les deux en trois secondes.


Ubuntu
  1. Commande source Linux avec exemples

  2. Commande Linux wc avec exemples

  3. Tutoriel Bash HereDoc avec exemples

  4. Commande Nohup avec exemples

  5. '&&' vs '&' avec la commande 'test' dans Bash

Bash Scripting - Commande Printf expliquée avec des exemples

Commande murale sous Linux avec exemples

Commande de tri sous Linux avec des exemples

Commande Usermod avec exemples

Commande IP Linux avec exemples

La commande Wait sous Linux expliquée avec des exemples pratiques