Linux Pipe Viewer (pv)

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen

Das Kommandozeilen Tool pv (Pipe Viewer) kann zwischen zwei Prozessen eingefügt werden um den Datenfluss visualisieren zu können. Alles was pv am Standard Input (stdin) erhält wird am Standard Output (stout) wieder ausgegeben. Der Fortschritt selbst wird auf Standard Error (stderr) ausgegeben.

Bei den meisten Distributionen wird dieses Tool nicht als Standard installiert. Unter Debian/Ubuntu kann es ganz einfach mittels apt-get install pv nachinstalliert werden.

Folgende Beispiele sollen die Verwendung erläutern.

Fortschritt beim Entpacken mit bzip2

Dieses Beispiel entpackt den Linux Kernel in das aktuelle Verzeichnis, welcher als mit bzip2 komprimiertes tar-Archiv vorliegt.

$ pv linux-3.1.5.tar.bz2 | bzip2 -d | tar x
23.6MB 0:00:08 [3.12MB/s] [=========>                          ] 30% ETA 0:00:18

Fortschritt beim Packen mit gzip

Der folgende Befehl packt das Homeverzeichnis in ein mit gzip komprimiertes tar-Archiv.

$ tar cf - /home/ | pv | gzip > home.tar.gz
tar: Removing leading `/' from member names
52.3MB 0:00:02 [24.8MB/s] [     <=>           

ISO Image mit Fortschrittsanzeige erzeugen

Das folgende Beispiel erzeugt ein ISO Image der eingelegten CD und Zeigt den Fortschritt dabei an.

dd if=/dev/cdrom | pv --size 700M | dd of=test.iso
436MB 0:01:10 [7.6MB/s] [============================================>                            ] 62% ETA 0:00:56

Ähnliches kann auch mit einem speziellen kill Signal erreicht werden (siehe ISO Image von CD oder DVD unter Linux erstellen).

Lesen von /dev/zero

Dieser Befehl zeigt wie schnell der Computer von /dev/zero lesen kann.

pv /dev/zero > /dev/null
40GB 0:00:04 [  10GB/s] [      <=>                                                                                ]

Folgendes komplexes Beispiel ist in der Manpage angeführt mit dem ironischen Kommentar:

Frequent use of this third form is not recommended as it may cause the programmer to overheat.

              (tar cf - . \
               | pv -n -s $(du -sb . | awk '{print $1}') \
               | gzip -9 > out.tgz) 2>&1 \
              | dialog --gauge 'Progress' 7 70

Weiterführende Links


Foto Christoph Mitasch.jpg

Autor: Christoph Mitasch

Christoph Mitasch arbeitet in der Abteilung Web Operations & Knowledge Transfer bei Thomas-Krenn. Er ist für die Betreuung und Weiterentwicklung der Webshop Infrastruktur zuständig. Seit einem Studienprojekt zum Thema Hochverfügbarkeit und Daten Replikation unter Linux beschäftigt er sich intensiv mit diesem Themenbereich. Nach einem Praktikum bei IBM Linz schloss er sein Diplomstudium „Computer- und Mediensicherheit“ an der FH Hagenberg ab. Er wohnt in der Nähe von Linz und ist neben der Arbeit ein begeisterter Marathon-Läufer und Jongleur, wo er mehrere Weltrekorde in der Team-Jonglage hält.


Das könnte Sie auch interessieren

DRBD Kernel Modul mit DKMS automatisch erstellen
Fdisk
Linux Kernel Versionen 6.x