pv: Progress Bar for md5sum et al.


Tools that know they will take a long time often come with a built-in progress indicator, but there are other utilities on Linux that often leave the user frustratedly tapping their fingers, wondering how much longer they will have to wait.

Luckily, there is a nifty little tool called pv that will donate a progress bar to any program that can read from standard input or a pipe. pv probably stands for pipe viewer.

1. Simple example: figure out how long an md5sum will take:

pv eternal.avi |md5sum

will display something like

96.5MB 0:00:05 [25.3MB/s] [=======>                                    ]  9% ETA 0:00:48

Notes:

  • pv reads from file and prints to stdout.
  • md5sum reads from stdin.
  • pv outputs the progress bar to stderr so as not to interfere with the piped data. See the man page for ways to customize pv’s output.
  • since the bottleneck of such an operation is the media you’re reading from, not the CPU, there will be no noticeable overhead.

2. Complex example: add a progress bar to tar/bzip2 compression/decompression:

tar cf - mydir | pv -n -s $(du -sb mydir | awk ‘{print $1}’) | bzip2 >mydir.tar.bz2

Notes:

  • this example is adapted from the pv man page.
  • the -n switch makes pv output only percentage values.
  • no file is passed to pv, so it reads from stdin (piped to the output of tar).
  • on a system with good cache and enough memory, doing the extra du -s mydir shouldn’t hurt much, since tar will go through the entire directory anyway.

Now let’s decompress it:

pv mydir.tar.bz2 |tar xjf -

By now you realize how awesome this is.

3. Fun example: measure /dev/null throughput:

pv /dev/zero >/dev/null

is close to 3.3GB/s on my 3-year-old system.

Notes:

  • this is not a benchmark ™.
  • pv can’t know the size of its input in this case (infinity), so it obviously can’t display an ETA.

pv is a brilliant example of the UNIX philosophy: simple puzzle pieces combining to create useful results. A couple of last-word remarks:

  • There is apparently a very similar tool called cpipe.
  • There are, unfortunately, programs for which you will not be able to use pv. One example is dpkg, which apparently tries seeking in its input, thus failing to work with pipes.
  • Thanks to my boss for pointing me to this awesome tool.
Posted in Linux, Shell, Technology   Tagged: bzip, bzip2, compression, decompression, md5, md5 sum, md5sum, pipe, progress, progress bar, pv, tar, throughput, tool, trick, unzip, zip   

Sursa
2009-02-05 00:00:00



Comenteaza





Ultimele 25 posturi adăugate

04:18:29JURNALUL CA MEMORIE —» Leo Butnaru
14:17:07Tender pentru achiziția lucrărilor de construție a unui foișor —» Asociaţia Obştească "Demos"
08:51:47Șansele Republicii Moldova de a deveni membră a Uniunii Europene pină în 2030 —» Roman Mihăeş
08:42:21Identitatea culturala dubla si basarabenii din Romania —» Roman Mihăeş
08:10:46Pactul pentru Europa si interesele de partid —» Roman Mihăeş
07:20:24Despre necesitatea crearii unui pol social-democrat —» Roman Mihăeş
06:51:45Despre alegerile prezidentiale la inceput de an politic —» Roman Mihăeş
05:51:03MEMORIE DE ȘCOLAR —» Leo Butnaru
08:59:009 obiceiuri care pot ușura viața oricărei mame —» Sunt MAMĂ!
11:41:10Declaraţie Hyde Park despre arestul unui activist —» Curaj.TV | Media alternativă
09:05:18Micile și marile bucurii ale lunii august 2024 —» Sunt MAMĂ!
05:45:10DIN POEZIA AVANGARDEI UCRAINENE —» Leo Butnaru
01:34:43Rescat de Pere Bessó (trad. al español y rumano) —» Andrei LANGA. Blogul personal
16:10:06Cu ocazia începutului noului an de studii 2024-2025, ministrul Educației și Cercetării, Dan Perciun, a transmis un mesaj de felicitare elevilor și cadrelor didactice —» Liceul Teoretic “Mihail Sadoveanu”, Călăraşi
14:07:24Tineretul revoluţionar al Bienne-ului —» APort | "Pentru un român care știe citi, cel mai greu lucru e să nu scrie." I.L. Carag
12:33:52Banca Națională a Moldovei ar putea avea noi competențe —» Drept MD
08:50:0010 motive pentru care e necesar să frecventăm biserica în zi de duminică —» Sunt MAMĂ!
07:37:57POTECĂ —» Andrei LANGA. Blogul personal
07:35:44LUMINI —» Andrei LANGA. Blogul personal
04:43:47AȚI ÎNCERCAT SĂ DIALOGAȚI CU INTELIGENȚA ARTIFICIALĂ? - EU DA... —» Leo Butnaru
14:08:39Alain DELON —» Andrei LANGA. Blogul personal
08:45:005 modalități de a-ți menține zilnic nivelul ridicat de energie! —» Sunt MAMĂ!
05:25:38JURNALUL CA MEMORIE —» Leo Butnaru
03:53:11Grupe noi la început de 2024 —» Fizică şi chimie
10:07:45Din nou: vom mai FI? —» Argentina Gribincea's Blog