GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wait-Befehl in Linux anhand von Beispielen erklärt

Das warten Befehl ist in Linux integriert; Daher können Sie es in jeder der Linux-Distributionen finden. Es wird verwendet, um zu warten, bis ein laufender Prozess abgeschlossen ist. Damit es funktioniert, müssen Sie es mit einer Job-ID oder einer Prozess-ID verwenden.

Kurz gesagt, das Warten Befehl mit einer bestimmten Job-ID oder Prozess-ID wartet auf den Abschluss des Prozesses und gibt seinen Beendigungsstatus zurück.

Warte Der Befehl ist praktisch, wenn es darum geht, einen Automatisierungsworkflow zu verwalten. Es kann Ihnen helfen, den Fluss richtig einzustellen, damit die Automatisierung erfolgreich ist. Beispielsweise erfordert Ihr Automatisierungsprozess, dass ein bestimmtes Modul die Ausführung beendet, bevor das nächste Modul wirksam werden kann. Mit dem wait-Befehl können Sie dies tun.

Arbeitsweise des Wartens Befehl

Der Befehl überwacht den vorherigen Prozess. Sobald der vorherige Prozess einen Status zurückgibt, sendet er einen Exit-Status. Wenn Sie also auf den Abschluss eines Prozesses mit der ID 25351 warten, wartet der Wartebefehl auf dessen Abschluss, bevor er den Exit-Status übermittelt. Die Antwortnachricht enthält den Prozessbeendigungsstatus.

Allgemeine Syntax:

wait [Processid] [jobid]
  • Prozess-ID –> Wenn Sie die Prozess-ID (Warten auf PID) verwenden, wird auf die Beendigung des Dienstprogramms gewartet
  • Job-ID –> In diesem Fall wird auf den von Ihnen ausgewählten Hintergrundprozess gewartet. Es funktioniert nur in der aktuellen Shell-Ausführungsumgebung.

Der Exit-Befehl wird so eingestellt, dass er einen Wert größer als 128 überschreitet, wenn der Prozess abrupt beendet wird. Wenn Sie also einen Betrag über 128 sehen, bedeutet dies, dass der Vorgang nicht wie beabsichtigt funktioniert hat.

Der Erfolgs-Exit-Status wird auf 0 gesetzt. Dies geschieht nur, wenn der Prozess erfolgreich beendet wird, ohne dass in der aktuellen Shell ein untergeordneter Prozess ausgeführt wird. Wenn Sie jedoch nicht 0 als Exit-Status erhalten, bedeutet dies, dass ein Fehler vorliegt. Es wird mit einem Wert zwischen 1 und 126 benachrichtigt. Wenn Sie außerdem einen Exit-Status von 127 erhalten, bedeutet dies, dass die Prozess-ID unbekannt ist.

Praxisbeispiele

Lassen Sie uns zum besseren Verständnis einige der folgenden praktischen Beispiele durchgehen.

Warten Befehl mit mehreren Prozessen

In diesem Beispiel werden wir sehen, wie das warten Befehl arbeitet mit verschiedenen Prozessen. Wir erstellen ein Skript, in dem wir zwei Befehle ausführen und dann auf sie warten.

Wir nennen das Skript multiple.sh . Unten ist der Code dafür.

#!/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 $?

Das Obige ist auch ein Beispiel für ein Skript mit dem Wait-Befehl. Außerdem wird der Status zurückgegeben. Gehen wir zum besseren Verständnis das Skript Zeile für Zeile durch. In der ersten Zeile importieren wir die Bash, die wir verwenden werden, um das Skript auszuführen.

Als nächstes geben wir an die Shell zurück, dass wir den Wartebefehl testen. Wir speichern die Prozess-ID des ersten Prozesses in der Variablen $process_id. Jetzt warten wir darauf, dass der erste Prozess ausgeführt wird. Sobald dies erledigt ist, wird ausgegeben, dass der erste Prozess abgeschlossen ist, und auch der Status mit dem „$?“

ausgegeben

Außerdem können Sie sehen, dass der zweite Wartebefehl mit „$!“ verwendet wird. Das bedeutet, dass wir die zweite Prozess-ID mit dem Wait-Befehl verwenden.

Am Ende werden beide Prozesse vollständig ausgeführt und geben einen Exit-Status von 0 zurück.

Einen Prozess beenden und wait verwenden Befehl

Im zweiten Beispiel beenden wir einen Prozess und verwenden dann wait Befehl. Nennen wir unser Skript 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

Wenn Sie das obige Skript ausführen, erhalten Sie die folgende Ausgabe:

Wie Sie sehen können, ist dieser Exit-Status anders und lautet, wenn der Prozess beendet wird. Dieses Beispiel zeigt Ihnen, wie der Befehl abhängig vom Schicksal des Prozesses unterschiedliche Exit-Status zurückgibt.

Überprüfen des Ausgangsstatuswerts

Im letzten Beispiel gehen wir ein Skript durch, das check() verwendet Funktion. Die Prüfung() Die Funktion benötigt zwei Argumente. Nennen wir unser Skript waitandcheck.sh .

Hier definieren wir eine Funktion:

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

Wie Sie können, gibt diese Funktion zunächst an, wie lange der erste Prozess schlafen wird, und verwendet diese dann, um zu schlafen und den Prozess zu beenden. Wir nehmen Eingaben mit den folgenden Zeilen entgegen:

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

In den obigen Zeilen nehmen wir die Eingabe des Benutzers und geben dann den Status mit dem wait aus Befehl.

Schlussfolgerung

Das ist alles über das Warten Befehlsverwendung unter Linux. Wie Sie erfahren haben, kann es im Automatisierungsworkflow gut eingesetzt werden. Wie verwenden Sie den Befehl? Haben Sie weitere Verwendungsmöglichkeiten als die in diesem Artikel behandelten gefunden? Teilen Sie Ihre Gedanken mit unseren Lesern.


Linux
  1. Bash-Warten-Befehl mit Beispielen

  2. wc Linux-Befehl mit Beispielen

  3. Befehl zum Herunterfahren von Linux mit Beispielen erklärt

  4. Linux Traceroute-Befehl, erklärt mit Beispielen

  5. JQ-Befehl in Linux mit Beispielen

Wartebefehl in Linux mit Beispielen

Tr-Befehl in Linux mit Beispielen erklärt

w Befehl mit Beispielen in Linux erklärt

Wait-Befehl in Linux mit praktischen Beispielen erklärt

Linux tee-Befehl erklärt (mit Beispielen)

Linux csplit Befehl erklärt (mit Beispielen)