Linux Pipe Viewer (pv)
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.
Inhaltsverzeichnis |
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/null
Dieser Befehl zeigt wie schnell der Computer von /dev/null 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
