GNU/Linux >> Tutoriels Linux >  >> Linux

La commande Wait sous Linux expliquée avec des exemples

L'attente la commande est intégrée à Linux ; vous pouvez donc le trouver dans n'importe quelle distribution Linux. Il est utilisé pour attendre avant qu'un processus en cours ne soit terminé. Pour que cela fonctionne, vous devez l'utiliser avec un identifiant de tâche ou un identifiant de processus.

En un mot, l'attente La commande avec un ID de travail ou un ID de processus donné attendra la fin du processus et renverra son état d'arrêt.

Attendez La commande est pratique lorsqu'il s'agit de gérer un workflow d'automatisation. Cela peut vous aider à définir correctement le flux afin que l'automatisation réussisse. Par exemple, votre processus d'automatisation nécessite qu'un module particulier termine son exécution avant que le module suivant puisse prendre effet. La commande wait vous permet de le faire.

Fonctionnement de l'attente commande

La commande surveillera le processus précédent. Une fois que le processus précédent a renvoyé un statut, il enverra alors un statut de sortie. Ainsi, si vous attendez qu'un processus avec l'ID 25351 se termine, la commande d'attente attendra sa fin avant de soumettre l'état de sortie. Le message de retour contiendra le statut de sortie du processus.

Syntaxe générale :

wait [Processid] [jobid]
  • ID de processus -> Si vous utilisez l'ID de processus (attendre le PID), il attendra la fin de l'utilitaire
  • Job ID –> Dans ce cas, il attendra le processus d'arrière-plan que vous avez sélectionné. Cela ne fonctionne que dans l'environnement d'exécution actuel du shell.

La commande exit est définie pour dépasser une valeur supérieure à 128 si le processus se termine brusquement. Donc, si vous voyez un montant supérieur à 128, cela signifie que le processus n'a pas fonctionné comme prévu.

L'état de sortie de réussite est défini sur 0. Cela ne se produit que si le processus se termine avec succès sans qu'aucun processus enfant ne s'exécute dans le shell actuel. Cependant, si vous ne recevez pas 0 comme état de sortie, cela signifie qu'il y a une erreur. Il est notifié avec une valeur comprise entre 1 et 126. De plus, si vous obtenez un état de sortie de 127, cela signifie que l'ID de processus est inconnu.

Exemples pratiques

Pour mieux comprendre, passons en revue quelques-uns des exemples pratiques ci-dessous.

Attendez commande avec plusieurs processus

Dans cet exemple, nous verrons comment le attente La commande fonctionne avec divers processus. Nous allons créer un script dans lequel nous exécutons deux commandes, puis nous les attendons.

Nous nommons le script multiple.sh . Vous trouverez ci-dessous le code correspondant.

#!/bin/bash
echo "testing the wait command instance 1" &
process_id=$!
echo "testing the wait command instance 2" &
wait $process_id
echo Job 1 is completed and exited with status $?
echo Job 2 is completed and existed with status $?

Ce qui précède est également un exemple de script avec la commande wait. En outre, il renvoie le statut. Pour mieux comprendre, parcourons le script ligne par ligne. Dans la première ligne, nous importons le bash que nous allons utiliser pour exécuter le script.

Ensuite, nous ferons écho au shell que nous testons la commande d'attente. Nous stockons l'identifiant de processus du premier processus dans la variable $process_id. Maintenant, nous attendons que le premier processus soit exécuté. Une fois cela fait, il affichera que le premier processus est terminé et affichera également le statut avec le "$ ?"

De plus, vous pouvez voir que la deuxième commande d'attente est utilisée avec "$!". Cela signifie que nous utilisons le deuxième identifiant de processus avec la commande d'attente.

Au final, les deux processus sont entièrement exécutés et renvoient un état de sortie de 0.

Tuer un processus et utiliser wait commande

Dans le deuxième exemple, nous allons tuer un processus puis utiliser le wait commande. Nommons notre script, killandwait.sh.

#! /bin/bash
echo "Killing process and using wait command"
sleep 10 &
procc_id=$!
kill $procc_id
wait $procc_id
echo $procc_id is terminate

Si vous exécutez le script ci-dessus, vous obtiendrez le résultat suivant :

Comme vous pouvez le voir, cet état de sortie est différent et se lit lorsque le processus est terminé. Cet exemple vous montre comment la commande renvoie un état de sortie différent selon le sort du processus.

Vérification de la valeur du statut de sortie

Dans le dernier exemple, nous allons passer par un script qui utilise le check() une fonction. Le vérifier() fonction prend deux arguments. Appelons notre script waitandcheck.sh .

Ici nous définissons une fonction :

function check()
{
echo "Let's sleep for $1 seconds"
sleep $1
exit $2
}

Comme vous le pouvez, cette fonction fait d'abord écho à la durée de sommeil du premier processus, puis les utilise pour dormir et quitter le processus. Nous prenons les entrées en utilisant les lignes ci-dessous :

check $1 $2 &
b=$!
echo "checking the status"
wait $b && echo FINE || echo NOT FINE

Dans les lignes ci-dessus, nous prenons l'entrée de l'utilisateur, puis affichons le statut à l'aide de wait commande.

Conclusion

C'est tout à propos de l'attente utilisation de la commande sous Linux. Comme vous l'avez constaté, il peut être utilisé à bon escient dans le flux de travail d'automatisation. Comment utilisez-vous la commande ? Avez-vous trouvé d'autres utilisations que celles couvertes dans cet article ? Partagez vos pensées avec nos lecteurs.


Linux
  1. Commande Bash wait avec exemples

  2. Commande Linux wc avec exemples

  3. Commande d'arrêt Linux expliquée avec des exemples

  4. Commande Linux Traceroute, expliquée avec des exemples

  5. Commande JQ sous Linux avec exemples

Commande Wait sous Linux avec des exemples

Commande Tr sous Linux expliquée avec des exemples

w Commande expliquée avec des exemples sous Linux

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

Explication de la commande Linux tee (avec exemples)

La commande Linux csplit expliquée (avec des exemples)