CLI Adventures: Pipe Viewer
Mit Pive Viewer
(pv
) kann man sich eine Fortschrittsanzeige für einen beliebigen Datenstrom anzeigen lassen. Das kann z.B. praktisch sein um einen Fortschrittsbalken für dd
zu erzeugen (ohne ständig kill -USR1 $pid
benutzen zu müssen):
dd if=/dev/zero bs=3M count=1024 | pv -s 3G > zero
Hier wird ein Fortschrittsbalken erzeugt, der einen Datenstrom von 3GB erwartet (-s 3G
):
1,32GB 0:00:04 [ 192MB/s] [##==> ] 44% ETA 0:00:05
Es ist auch möglich mehrere Datenströme zeitgleich anzeigen zu lassen:
dd if=/dev/zero bs=3M count=1024 | pv -s 3G -N dd | gzip - | pv -cN gzip > zero.gz
Hierbei wird wie zuvor eine 3GB-Datei über dd
erzeugt, diese dann aber anschließend mit gzip
gepackt. Auch hier entsteht ein Datenstrom welcher mit pv
überwacht wird. Damit man die Datenströme unterscheiden kann wird über den Parameter -N
noch jeweils ein Name vergeben:
gzip: 1,22MB 0:00:12 [ 111kB/s] [ <=> ]
dd: 1,23GB 0:00:12 [ 105MB/s] [#####> ] 41% ETA 0:00:17
Da wir natürlich nicht wissen welche Größe die gepackte Datei später erreichen wird können wir hier keine Größe angegeben, daher gibt es auch keinen echten Fortschrittsbalken (und keine Restzeitangabe). Der Parameter -c
sorgt dafür dass sich die beiden pv
-Ausgaben nicht überlagern.Der pv
-Befehl kann auch als Ersatz für cp
genutzt werden:
pv /tmp/example.zip > /root/example.zip
Die Dateigröße ermittelt pv
in diesem Fall automatisch selbst:
684MB 0:00:04 [ 170MB/s] [#####> ] 69% ETA 0:00:01
Unter Debian wird pv
ganz einfach mit apt-get install pv
installiert.