跳到主要内容

Linux pv 命令 - 显示数据传输进度

介绍

pv(英文全拼:pipe viewer)命令用于通过管道监控数据处理的进度信息。这些信息包括已经耗费的时间、完成的百分比(通过进度条显示)、当前的速度、全部传输的数据,以及估计剩余的时间。

语法

pv [OPTION] [FILE]...

选项

  • -p, --progress :显示进度条。
  • -t, --timer :显示任务已经进行的时长。
  • -e, --eta :显示剩余多长时间完成。
  • -I, --fineta :以绝对时间显示预计完成时间。
  • -r, --rate :显示当前传输速率。
  • -a, --average-rate :显示平均传输速率。
  • -b, --bytes :显示传输的字节数。
  • -T, --buffer-percent :显示正在使用的传输缓冲区的百分比。
  • -A, --last-written NUM :显示最后写入的 NUM 个字节。
  • -F, --format FORMAT :设置输出格式为 FORMAT。
  • -n, --numeric :显示进度百分比数字,而不是可视化信息。
  • -q, --quiet :安静模式,不要输出任何传输信息。
  • -W, --wait :在传输第一个字节之前不显示任何内容。
  • -D, --delay-start SEC :在经过 SEC 秒数之前不显示任何内容。
  • -s, --size SIZE :将估计数据大小设置为 SIZE 字节。
  • -l, --line-mode :计数行而不是字节。
  • -0, --null :行是 null-terminated 的。
  • -i, --interval SEC :每 SEC 秒更新一次。
  • -w, --width WIDTH :假设终端是 WIDTH 个字符宽。
  • -H, --height HEIGHT :假设终端是 HEIGHT 行高。
  • -N, --name NAME :使用 NAME 作为可视信息的前缀。
  • -f, --force :强制输出,即使标准错误不是终端也输出。
  • -c, --cursor :使用光标定位转义序列。
  • -L, --rate-limit RATE :将传输限制为每秒 RATE 字节。
  • -B, --buffer-size BYTES :使用 BYTES 的缓冲区大小。
  • -C, --no-splice :从不使用 splice(),始终使用读/写。
  • -E, --skip-errors :跳过输入中的读取错误。
  • -S, --stop-at-size :在传输 --size 字节后停止。
  • -R, --remote PID :更新进程 PID 的设置。
  • -P, --pidfile FILE :在 FILE 中保存进程 ID。
  • -d, --watchfd PID[:FD] :监视进程 PID 打开的文件 FD。
  • -h, --help :显示帮助信息并退出。
  • -V, --version :显示版本信息并退出。

示例

复制文件时显示进度条(如果没有指定选项,默认使用 -p, -t, -e, -r 和 -b 选项)

$ pv getiot.db > getiot.db.bak

将 /var/log/syslog 文件打包成 zip 压缩包,并显示进度

$ pv /var/log/syslog | zip > syslog.zip

使用 tar 命令解压缩时显示进度条

$ pv rootfs.tar.bz2 | tar -jxf - -C rootfs/
12.3MiB 0:00:02 [6.15MiB/s] [=========> ] 21% ETA 0:00:07

解压完成

$ pv rootfs.tar.bz2 | tar -jxf - -C rootfs/
57.8MiB 0:00:10 [5.53MiB/s] [==============================================>] 100%