Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

wait - Auf die Beendigung von Hintergrundprozessen warten

&pagelevel(4)&pagelevel

(await process completion)


Das in die POSIX-Shell sh eingebaute Kommando wait wartet,

  • bis der vorher gestartete Hintergrundprozess mit der angegebenen Prozessnummer (PID) beendet ist, oder

  • bis alle vorher gestarteten Hintergrundprozesse beendet sind, wenn Sie beim Aufruf keine Prozessnummer angeben.

Im Dialog wartet die Shell standardmäßig nicht auf die Beendigung eines vorher gestarteten Hintergrundkommandos, sondern gibt sofort das Bereitzeichen aus. Bei Kommandos, die nicht im Hintergrund gestartet werden, wartet die Shell immer auf das Ende der Ausführung. Für Shell-Prozeduren gilt das gleiche. Wenn eine Shell-Prozedur ein Kommando enthält, das die Ausgabe eines vorher im Hintergrund gestarteten Kommandos bearbeiten soll, können Sie mit wait sicherstellen, dass dieses Hintergrundkommando rechtzeitig beendet ist.

Erhalten Sie beim Starten eines Hintergrundprozesses die Fehlermeldung

fork failed - too many processes

dann können Sie Ihr System durch den Gebrauch von wait entlasten. Wenn Sie hierbei keinen Erfolg erzielen, ist die Systemprozesstabelle voll oder es sind zu viele Prozesse im Vordergrund aktiv.


Hinweis

Besteht eine Pipeline aus 3 oder mehr Teilen, so gruppiert die Shell jeweils zwei Prozesse und ordnet diesen einen Steuerprozess zu. Diese beiden Prozesse sind damit keine Sohnprozesse der Shell. Beachten Sie deshalb, dass wait auf Prozesse, die keine Sohnprozesse der Shell sind, nicht wartet.


Syntax


wait[ prozessnummer...]

prozessnummer

Nummer des Hintergrundprozesses, auf dessen Ende wait warten soll.

Sie können nur eine Prozessnummer angeben. Wenn Sie mehrere Prozessnummern angeben, gibt wait keine Fehlermeldung aus, sondern wartet auf die Beendigung des Hintergrundprozesses, den Sie beim Aufruf als ersten angegeben haben.

Das Kommando wait gibt als Endestatus den Endestatus des Hintergrundprozesses zurück. Haben Sie die Prozessnummer eines bereits beendeten Hintergrundprozesses angegeben, dann verhält sich wait wie bei nicht angegebener Prozessnummer (siehe Endestatus).

Der Variablen ! (Ausrufezeichen) weist die Shell immer die Prozessnummer des zuletzt im Hintergrund gestarteten Kommandos zu. Mit $! können Sie auf den Inhalt dieser Variablen zugreifen.

prozessnummer nicht angegeben:
wait wartet auf die Beendigung aller Hintergrundprozesse, die vor dem Aufruf von wait gestartet wurden. In diesem Fall gibt wait den Endestatus 0 zurück.

Endestatus

Wenn Sie wait ohne Argument aufgerufen haben und alle bekannten Prozessnummern sich beendet haben, ist der Endestatus immer gleich 0.

1-126Fehler
127Das Kommando der letzten Prozessnummer ist unbekannt.

Internationale Umgebung

Die folgenden Umgebungsvariablen beeinflussen die Ausführung des Kommandos wait:

LANG

Gibt einen Standardwert für die Variablen für die internationale Umgebung an, die nicht gesetzt oder Null sind. Ist LANG nicht gesetzt oder Null, wird der entsprechende Standardwert der internationalen Umgebung verwendet. Enthält eine der Internationalisierungsvariablen eine ungültige Einstellung, verhält sich das Kommando so, als sei keine der Variablen definiert worden.

LC_ALL

Ist diese Variable auf einen Wert gesetzt, d. h. ist sie nicht leer, überschreibt dieser Wert die Werte aller übrigen Internationalisierungsvariablen.

LC_CTYPE

Legt die internationale Umgebung für die Interpretation der Byte-Folgen eines Datentexts als Zeichen fest (z.B. Singlebytezeichen im Unterschied zu Mehrbytezeichen in Argumenten und Eingabedateien) sowie die Einteilung der Zeichen in Groß- und Kleinbuchstaben und deren Übereinstimmung.

LC_MESSAGES

Legt die internationale Umgebung für Format und Inhalt der Diagnosemeldungen fest, die in die Standardfehlerausgabe geschrieben werden.

NLSPATH

Legt den Pfad der Meldungsdateien für LC_MESSAGES fest.

Beispiel 1

Die Shell soll auf den gestarteten Hintergrundprozess warten:

$ find / -name tst -print 2>/dev/null &
3456

$ wait 3456

home/markus/PASCAL/tst

...

Beispiel 2

Die Shell-Prozedur warte zeigt, wie man auf das Ende eines bestimmten Hintergrundkommandos warten kann. Diese Shell-Prozedur hat den folgenden Inhalt:

: Aufruf mit sh warte
sort liste > sortiert &
pid1=$!
tar cvf /dev/dsk/f0t /home/anna &
pid2=$!
...
wait $pid1
pg sortiert

Die jeweiligen Prozessnummern der Hintergrundkommandos werden in den Variablen pid1 und pid2 gespeichert. So sind diese Prozessnummern für den späteren Gebrauch gesichert, da die Variable ! immer nur die Prozessnummer des zuletzt im Hintergrund gestarteten Kommandos enthält.

Das Kommando wait wartet auf das Ende des Kommandos sort. Erst dann gibt pg den Inhalt der Datei sortiert aus.

Siehe auch

waitpid() [4]