参考文献

PV

  • pv(Pipe Viewer)是一个终端应用程序,能够以可视化的方式展示管道中的数据传输过程。它可以显示进度条、数据传输速率、已传输的数据量和剩余时间估计等信息。这对于调试和监视长时间运行的数据传输任务特别有帮助。pv能够插入到管道命令序列中,无需对其他命令做任何改变。

基本语法

1
pv [option] [file]

常用选项或参数说明

选项 描述
-a, --average-rate 显示数据传输平均速率计数器
-b, --bytes 显示已传输的字节数
-c, --cursor 使用光标定位转义序列
-e, --eta 显示预计到达时间 (完成)
-l, --line-mode 计数行而不是字节
-n, --numeric 输出百分比
-p, --progress 显示进度条
-r, --rate 显示数据传输速率计数器
-s 设置预期的数据总量
-t, --timer 显示已用时间
-w 设置进度条的宽度
-h 显示帮助信息
-I, --fineta 显示绝对估计到达时间(完成)
-T, --buffer-percent 显示正在使用的传输缓冲区百分比
-A, --last-written NUM 显示上次写入的字节数
-F, --format FORMAT 将输出格式设置为FORMAT
-q, --quiet 不输出任何信息
-N, --name NAME 在可视信息前面加上名称
-d, --watchfd PID[:FD] 监视进程PID,打开的文件FD

示例

显示复制过程的进度

1
2
3
4
pv file.tar.gz | dd of=/dev/null bs=500M
53GiB 0:00:13 [ 181MiB/s] [================================================================================================================================> ] 41% ETA 0:00:18

pv -r /path/to/source_directory/* | cp -a /path/to/source_directory/* /path/to/destination_directory/

显示压缩进度

1
2
pv file.tar.gz | gzip > test.tar.gz
225MiB 0:00:08 [28.3MiB/s] [==> ] 1% ETA 0:07 282MiB 0:^C:10 [28.4MiB/s] [=====> ] 2% ETA 0:07:55

结合tar显示操作进度

1
2
tar -cf - dockerfile/ |pv -cN tar | gzip > dockerfile.tar.gz
tar: 414MiB 0:00:10 [28.8MiB/s] [ <=> ]

结合split命令分割大文件

1
2
3
pv file.tar.gz | split -d -b 4G - file.tar.gz.part.
70GiB 0:00:04 [ 838MiB/s] [====================================================================================> ] 27% ETA 0:00:10

监控解压进度

1
2
pv file.tar.gz |tar xzf -
74MiB 0:00:05 [98.3MiB/s] [========> ] 3% ETA 0:02:19