Pipe Viewer (pv)

Z Thomas-Krenn-Wiki
Przejdź do nawigacji Przejdź do wyszukiwania

Narzędzie konsolowe pv (Pipe Viewer) może zostać dodane pomiędzy dwa procesy w celu wizualizacji przepływu danych. Wszystko co pv otrzymuje na standardowy input (stdin) zostaje przekazane na standardowy output (stout). Sam postęp przekazywany jest do standardowego error (stderr).

W większości dystrybucji narzędzie to nie jest obecne w standardowej instalacji. W Debianie / Ubuntu może ono zostać bardzo łatwo doinstalowane poprzez apt-get install pv.

Następujące przykłady ilustrują jego zastosowanie.

Postęp podczas rozpakowywania z bzip2

Ten przykład rozpakowuje jądro Linuksa w bieżącym katalogu, które jest obecne jako skompresowane w bzip2 archiwum tar.

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

Postęp podczas pakowania z gzip

Następująca komenda pakuje katalog home z gzip do archiwum tar.

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

Tworzenie obrazu ISO z wskaźnikiem postępu

Następujący przykład tworzy obraz ISO płyty CD i pokazuje przy tym postęp.

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

Podobny efekt może zostać również osiągnięty przez specjalny kill Signal (vide Tworzenie obrazu ISO plyty CD lub DVD pod Linuksem ).

Odczyt z /dev/null

To polecenie pokazuje jak szybko komputer może czytać z /dev/null.

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

Kolejny złożony przykład jest przeprowadzony w manpage z ironicznym komentarzem:

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

Linki

Powiązane artykuły

ISCSI Multipathing pod Linuksem
Reset sensora Chassis Intrusion w systemach Supermicro