http://www.ivarch.com/programs/pv.shtml
Pipe Viewer
Skip navigation
* Home
* Services
* Open Source
+ Index
+ Continual Sync
+ JMBA
+ Postprox
+ PV
+ QSF
+ RT FilterRules
+ RT ShareSearchLink
+ Term::VT102
+ YUM repository
Current version: 1.6.20 (12 September 2021) [src] [srpm] [rpm64]
Downloads
* pv-1.6.20.tar.gz [sig] * 132K
* pv-1.6.20.tar.bz2 [sig] * 113K
* pv-1.6.20-1.src.rpm * 150K
* pv-1.6.20-1.x86_64.rpm * 66K
* pv-1.6.0-1.aix6.1.ppc.rpm * (AIX)
Information & Links
* GitHub page
* Manual (online version)
pv - Pipe Viewer - is a terminal-based tool for monitoring the
progress of data through a pipeline. It can be inserted into any
normal pipeline between two processes to give a visual indication of
how quickly data is passing through, how long it has taken, how near
to completion it is, and an estimate of how long it will be until
completion.
Additional support is available for multiple instances working in
tandem, to given a visual indicator of relative throughput in a
complex pipeline:
[Pipe Viewer in action with a complex pipeline]
Source for all systems and RPMs for RPM-based systems are available
in the download area.
Comments, bug reports, and patches can be sent using the Contact Form
.
If you liked pv, please consider a donation: [Donate] [Donate]
Packages and ports
Run "apt-get install pv" to get the latest
Debian / Ubuntu: packaged version from "unstable" / "testing". (
Debian QA page here.)
CentOS / RHEL: Set up my YUM repository or use RepoForge, then
do "yum install pv".
Fedora: Run "yum install pv"; the "extras" repository may
be required. (Fedora package status here.)
openSUSE Leap 15.3: Run "sudo zypper install pv". (Keith Guitar)
Slackware: Use this SlackBuild script.
Cygwin: Available as a package. (Christian Franke)
FreeBSD: Listed on FreshPorts.
OpenBSD: Listed under ports.
Solaris: Download binary packages from OpenCSW.
Includes pv version 1.1.4 in the "/dev"
OpenSolaris: repository (as of build 119). Install with "pkg
install SUNWpipe-viewer". (Menno Lageman)
AIX: An RPM from Pawel Piatek is in the downloads
section.
SerenityOS: Ported to SerenityOS. (Brian Gianforcaro)
MacPorts: Run "port install pv" to get the latest version.
(Brandon Crawford)
Mac HomeBrew: Run "brew install pv" to get the latest version.
(Justin Campbell)
Exherbo: Run "cave resolve -x app-misc/pv" to get the
latest version. (Wulf C. Krueger)
Run "emerge sys-apps/pv" to get the latest
Gentoo: version. (S. Lockwood-Childs; update from Peter
Broadwell)
IRIX Nekoware: Available in the Nekoware "beta" repository. (
Mark Round)
Syabas PopcornHour: Someone posted this port in a forum.
Nix: Run "nix-env -i pv". (Erick Ochoa)
Spack: Run "spack install pv" to get the latest version.
(Christoph Junghans)
Notes
* (7 Feb 2022) - Jacek Wielemborek writes:
pgrep -x gzip | xargs -n1 -I{} bash -c 'tmux split-window -l 1 pv -ptebar -d {}:3; tmux last-pane'
You can run this in a tmux session and it's going to display a
progress bar for each currently running gzip decompression
process. Quite often I run a massively parallel job and it's
difficult to estimate ETA when the process is not uniform. This
way I'm getting a lot of progress bars and I can get a better
feel of the system's performance.
* (29 Nov 2013) - Lee Yiu Chung writes:
I tried to compile pv under SmartOS (a fork from OpenSolaris),
but I found a compiler error that struct stat is redefined.
After some tracing I found that /usr/include/sys/stat.h have BOTH
"struct stat" and "struct stat64" defined, and the "define stat64
stat" macro in autoconf/header.in happily replacing stat64 to
stat, thus causing the compiler error.
As a result I have to modify autoconf/header.in so that the
offending macro is disabled in Solaris platform. Below is the
diff file:
--- autoconf/header.in.orig 2013-08-01 03:39:15.000000000 +0800
+++ autoconf/header.in 2013-11-29 20:07:21.697885164 +0800
@@ -70,6 +70,7 @@
# define stat64 stat
# define fstat64 fstat
# endif
+# elif defined(__sun) && defined(__SVR4)
# else
# define stat64 stat
# define fstat64 fstat
Author notes: Large file support is not implemented very portably
at the moment. I will try to fix it so it does not do things like
redefining stat in future, so this should be fixed in a future
version. In the meantime please try the above patch that has been
kindly supplied.
News
1.6.20 - 12 September 2021
+ fix: add missing stddef.h include to number.c (Sam James)
1.6.19 - 5 September 2021
+ fix: starting pv in the background no longer immediately
stops unless the transfer is to/from the terminal (Andriy
Gapon, Jonathan Elchison)
+ fix: using -B, -A, or -T now switches on -C implicitly
(Johannes Gerer, Andre Stapf)
+ fix: AIX build fixes (Peter Korsgaard)
+ i18n: updated German "--help" translations (Richard Fonfara)
+ i18n: switched to UTF-8 encoding, added missing translations
(de,fr,pt)
+ docs: new "common switches" manual section (Jacek
Wielemborek)
+ docs: use placeholder instead of /dev/sda in the manual
(Pranav Peshwe)
+ docs: mention MacOS pipes and "-B 1024" in the manual (Jan
Venekamp)
+ docs: correct shell in autoconf/scripts/index.sh (Juan Picca)
+ cleanup: various compiler warnings cleaned up
1.6.6 - 30 June 2017
+ (r161) use %llu instead of %Lu for better compatibility (Eric
A. Borisch)
+ (r162) (#1532) fix target buffer size (-B) being ignored
(AndCycle, Ilya Basin, Antoine Beaupre)
+ (r164) cap read/write sizes, and check elapsed time during
read/write cycles, to avoid display hangs with large buffers
or slow media; also remove select() call from repeated_write
function as it slows the transfer down and the wrapping alarm
() means it is unnecessary
+ (r169) (#1477) use alternate form for transfer counter, such
that 13GB is shown as 13.0GB so it's the same width as 13.1GB
(Andre Stapf)
+ (r171) cleanup: units corrections in man page, of the form kb
-> KiB
+ (r175) report error in "-d" if process fd directory is
unreadable, or if process disappears before we start the main
loop (Jacek Wielemborek)
1.6.0 - 15 March 2015
+ fix lstat64 support when unavailable - separate patches
supplied by Ganael Laplanche and Peter Korsgaard
+ (#1506) new option "-D" / "--delay-start" to only show bar
after N seconds (Damon Harper)
+ new option "--fineta" / "-I" to show ETA as time of day
rather than time remaining - patch supplied by Erkki Seppala
(r147)
+ (#1509) change ETA (--eta / -e) so that days are given if the
hours remaining are 24 or more (Jacek Wielemborek)
+ (#1499) repeat read and write attempts on partial buffer fill
/empty to work around post-signal transfer rate drop reported
by Ralf Ramsauer
+ (#1507) do not try to calculate total size in line mode, due
to bug reported by Jacek Wielemborek and Michiel Van Herwegen
+ cleanup: removed defunct RATS comments and unnecessary
copyright notices
+ clean up displayed lines when using --watchfd PID, when PID
exits
+ output errors on a new line to avoid overwriting transfer bar
1.5.7 - 26 August 2014
+ show KiB instead of incorrect kiB (Debian bug #706175)
+ (#1284) do not gzip man page, for non-Linux OSes (Bob
Friesenhahn)
+ work around awk bug in tests/016-numeric-timer in decimal ","
locales
+ fix "make rpm" and "make srpm", extend "make release" to sign
releases
1.5.3 - 4 May 2014
+ remove SPLICE_F_NONBLOCK to fix problem with slow splice()
(Jan Seda)
1.5.2 - 10 February 2014
+ allow --watchfd to look at block devices
+ let --watchfd PID:FD work with --size N
+ moved contributors out of the manual as the list was too long
(NB everyone is still listed in the README and always will
be)
1.5.1 - 23 January 2014
+ new option --watchfd - suggested by Jacek Wielemborek and
"fdwatch"
+ use non-block flag with splice()
+ new display option --buffer-percent, suggested by Kim Krecht
+ new display option --last-written, suggested by Kim Krecht
+ new transfer option --no-splice
+ fix for minor bug which dropped display elements after one
empty one
+ fix for single fd leak on exit (Cristian Ciupitu)
1.4.12 - 5 August 2013
+ new option --null - patch supplied by Zing Shishak
+ AIX build fix (add -lc128) - with help from Pawel Piatek
+ AIX -c fixes - with help from Pawel Piatek
+ SCO build fix (po2table.sh) - reported by Wouter Pronk
+ test scripts fix for older distributions - patch from Bryan
Dongray
+ fix for splice() not using stdin - patch from Zev Weiss
1.4.6 - 22 January 2013
+ added patch from Pawel Piatek to omit O_NOFOLLOW in AIX
1.4.5 - 10 January 2013
+ updated manual page to show known problem with "-R" on Cygwin
[Show full history]
This software is OSI Certified Open Source [OSI
Software. Certification
OSI Certified is a certification mark of the Open Mark]
Source Initiative.