Woher kennt `pv` die Größe der Zielfestplatte?

4

Ich habe kürzlich ein Laufwerk mit dem folgenden Befehl auf Null gestellt:

# pv /dev/zero > /dev/sdd

Betrachtet man den Durchsatz und die verbleibende Zeit nach pv, es richtig geschätzt / berechnet / wusste die Größe der Festplatte - 120 GB - von Beginn des Vorgangs an.

Meine Frage ist, wie hat pv Wissen Sie das, wenn die Ausgabe auf diese Weise umgeleitet wird?

markrian
quelle

Antworten:

3

Von man 1 pv:

Beachten Sie, dass, wenn die Eingabegröße nicht berechnet werden kann und die Ausgabe ein Blockgerät ist, die Größe des Blockgeräts und verwendet wird pv stoppt automatisch bei dieser Größe als ob -S wurde gegeben.

Dies "als ob -S "ist zu vermeiden," kein Platz mehr auf dem Gerät "und erfolgreich zu beenden.


Wenn Sie sich fragen, wie es das ist pv Wenn Sie die Größe der Standardausgabe kennen, lautet die Antwort:

Das ist nicht der Fall pv Streams zu einem Fifo und dann liest die Shell das Fifo und schreibt darauf /dev/sdd. Was passiert, ist die Shell macht die pv 's Dateideskriptor 1 Punkt auf /dev/sdd von Anfang an, damit der Prozess erkennen kann, ob es sich um ein Blockgerät handelt, die Größe abfragen usw.

Kamil Maciorowski
quelle
Ah, ich verstehe, super! Ich dachte, die Shell hat immer ein FIFO für Umleitungen / Pipes erstellt. Macht Sinn. Vielen Dank!
markrian