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

09:19:40Școala de vară cu pregătire olimpică la fizică 2024 —» Fizica pentru Moldova
05:29:36DIN VITRALIU # 60 (III) —» Leo Butnaru
13:47:34Întâlnirea bibliotecarilor – bucuria cititorilor —» BiblioCity
05:18:35Concursul literar „La izvoarele înțelepciunii” dedicat vieții și activității literare a poetului Vasile Romanciuc —» BiblioCity
05:02:48Găsiți-l și cereți-i cartea cu autograf – Vă va înfrumuseța prezentul și, mai ales, viitorul —» BiblioCity
05:01:58Răsărit literar la Biblioteca „Mihail Ciachir” —» BiblioCity
04:53:38DIN VITRALIU # 60 (Nr. 2) —» Leo Butnaru
21:46:51Vampiru’ deputat —» APort | "Pentru un român care știe citi, cel mai greu lucru e să nu scrie." I.L. Carag
19:06:25El Dorado —» Andrei LANGA. Blogul personal
15:36:13În trecere —» APort | "Pentru un român care știe citi, cel mai greu lucru e să nu scrie." I.L. Carag
13:39:35Săptămâna Inovației și Creativității 2024 —» Biblioteca de Arte 'Tudor Arghezi'
11:17:05POEMUL APUSULUI —» Andrei LANGA. Blogul personal
08:03:00Premieră: Suholimanschii Belîi, Crama Neamțu —» Fine Wine
04:01:07DIN VITRALIU # 60 / 2024 —» Leo Butnaru
16:57:12Insolaţie şi steroizi —» APort | "Pentru un român care știe citi, cel mai greu lucru e să nu scrie." I.L. Carag
11:45:28Minunata și miraculoasa carte „Din cer au căzut trei mere”  —» Biblioteca Hristo Botev
10:48:37Concursul literar „La izvoarele înțelepciunii” dedicat vieții și activității literare a poetului Vasile Romanciuc —» BiblioCity
20:06:32Mironosițele și Apostolii închipuie cele două laturi ale vieții noastre —» Portalul Tineretului Ortodox din Moldova
17:53:18POEMUL APUSULUI —» Andrei LANGA. Blogul personal
17:33:58Nu plecăm acasă, parcul nu ne lasă #protest în Titan/I.O.R. —» Curaj.TV | Media alternativă
15:21:39Curse poluante de mașini în centrul capitalei #NationalArena —» Curaj.TV | Media alternativă
14:02:58#NoSugarPolitics: Caucazul de sud fierbe. Mii de oameni in strada la Tbilisi si Erevan —» Curaj.TV | Media alternativă
06:06:30Noutățile Vernisajului —» Fine Wine
05:59:16JURNALUL DE LA HYPERION (VI) —» Leo Butnaru
19:06:0019 mai 2024 – fatalitate și destin —» codul omega