Betrachten Sie den folgenden Befehl :
bash -c "echo x; cat 1" | tee 1
.
Mein Verständnis ist, dass es in eine neue Shell x
verzweigen, in stdout schreiben, file 1 not found
in stderr schreiben , die Steuerung beenden und an den übergeordneten Prozess zurückgeben und x
in stdout und in schreiben würde 1
. Daher würde ich erwarten, dass die endgültige Ausgabe x
erfolgt und die Datei 1
genau die Zeichenfolge enthält x
.
Dies ist jedoch nicht der Fall. Tatsächlich 1
enthält die Datei normalerweise mindestens zwei Instanzen von x
und manchmal Tausende von Zeilen von x
s. Bei einem Batch-Test, bei dem der Befehl zehntausend Mal ausgeführt wurde, x
betrug die durchschnittliche Anzahl der in die Datei geschriebenen s 52,3 und der Median 1. Welcher Mechaniker verursacht dies? Welche Wahrscheinlichkeitsverteilung modelliert dieses Verhalten? Ich vermute, dass es bedingt geometrisch und ansonsten einheitlich ist.
x
betrug die durchschnittliche Anzahl der in die Datei geschriebenen s 4,35. Ich denke, es wird sehr von der Maschinenlast abhängen.
tee
die Datei zum Schreiben geöffnet wurde, bevorcat
sie zum Lesen geöffnet wurde, enthält die Datei möglicherweise vielex
-es. In diesem Fall würde die "Schleife" immer dann enden, wenn dascat
Lesen schneller als dastee
Schreiben erfolgt und das Ende der Datei erreicht.