Commande d'attente dans Linux

Commande d'attente dans Linux
attendez est une commande intégrée de Linux qui attend de terminer tout processus en cours d'exécution. attendez La commande est utilisée avec un ID de processus ou un ID de travail particulier. Lorsque plusieurs processus s'exécutent dans le shell, seul l'ID de processus de la dernière commande sera connu par le shell actuel. Si la commande d'attente est exécutée cette fois, elle sera appliquée pour la dernière commande. Si aucun ID de processus ou l'ID de travail n'est donné avec la commande d'attente, il attendra que tous les processus enfants actuels se terminent et renvoient l'état de sortie.

La valeur d'état de sortie de la commande d'attente dépend de la commande indiquée par le dernier opérande spécifié. Lorsqu'un processus se termine anormalement, le statut de sortie sera supérieur à 128 et sera différent des valeurs d'état de sortie des autres commandes. attendez Les sorties de commande avec la valeur 0 lors des appels sans opérands et que tous les ID de processus sont connus par le shell actuel ont terminé. Si la commande d'attente détecte une erreur, il renvoie une valeur de 1 à 126. Si le dernier ID de processus est inconnu, attendez la commande avec valeur 127. Comment vous pouvez utiliser la commande d'attente dans Linux est affiché dans ce tutoriel.

Exemple-1: Utilisation de la commande d'attente pour plusieurs processus

Après avoir exécuté le script suivant, deux processus s'exécuteront en arrière-plan et l'ID de processus de la première commande ECHO est stocké dans la variable $ process_id. Lorsque la commande d'attente est exécutée avec $ process_id, la commande suivante attendra la tâche de la première commande echo. La deuxième commande d'attente est utilisée avec '$!'Et cela indique l'ID de processus du dernier processus en cours d'exécution. '$?'est utilisé pour lire la valeur d'état de la commande d'attente.

#!/ bac / bash
Echo "Tester la commande d'attente1" et
process_id = $!
Echo "Tester la commande d'attente2" et
attendre $ process_id
Echo Job 1 est sorti avec le statut $?
Attendez $!
Echo Job 2 sorti avec le statut $?

Sortir:

$ bash wait1.shot

Exemple-2: Testez la commande d'attente après avoir utilisé la commande kill

Dans le script suivant, la commande d'attente est exécutée après la fin du processus. La commande Sleep s'exécute en tant que processus de fond et Kill Commande est exécutée pour mettre fin au processus en cours d'exécution. Après cette commande d'attente, il est exécuté avec l'ID de processus du processus terminé. La sortie affichera l'ID de processus du processus terminé.

#!/ bac / bash
Echo "Tester la commande d'attente"
sommeil 20 &
pid = $!
Tuez $ pid
Attendez $ pid
Echo $ pid a été résilié.

Sortir:

$ bash wait2.shot

Exemple-3: Vérifiez la valeur d'état de sortie

Dans le script suivant, la fonction vérifier() est appelé par deux valeurs d'argument. Il est discuté dans le début du tutoriel que si la commande d'attente exécutée avec succès, la valeur de sortie sera 0 et si la commande d'attente détecte une erreur, il renverra toute valeur entre 1 et 126. Après avoir exécuté le script, si vous passez 0 comme deuxième valeur d'argument, la commande d'attente se termine avec succès et si vous passez une valeur plus que zéro, il se termine sans succès.

#!/ bac / bash
Fonction Check ()

écho "dormir pendant 1 $"
sommeil 1 $
sortir 2 $

Vérifiez 1 $ 2 $ et
b = $!
Echo "Vérification du statut"
attendez $ b && echo ok || écho pas ok

Sortir:

$ bash wait3.sh 3 0
$ bash wait3.sh 3 5

Hope, ce tutoriel aidera à apprendre correctement la commande d'attente. Il y a une autre commande dans Linux, nommé dormir Pour attendre la quantité de fois, mais il y a quelques différences entre ces commandes. Si vous êtes intéressé à connaître la commande du sommeil, vous pouvez visiter ce lien.