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%
