Posted on:
Last modified:
pv 是 Pipe Viewer 的缩写,也就是管道查看器。挡在命令行执行命令的时候,可以通过使用 pv 来 知道当前的进度。
比如你要把一个日志打包好下载:
% gzip -c access.log > access.log.gz
可以改成
% cat access.log | gzip > access.log.gz
使用 pv
% pv access.log | gzip > access.log.gz
611MB 0:00:11 [58.3MB/s] [=> ] 15% ETA 0:00:59
可以使用多个 pv 来查看在不同阶段的速率
$ pv -cN source access.log | gzip | pv -cN gzip > access.log.gz
source: 760MB 0:00:15 [37.4MB/s] [=> ] 19% ETA 0:01:02
gzip: 34.5MB 0:00:15 [1.74MB/s] [ <=> ]
在上面的命令中,-c
是为了防止两个 pv 的显示混在一起。-N
表示名字。可以看到读取
access.log 的速率是 37.4 MB/s,而写入 gzip 文件的速率大概是 1.74 MB/s,我们大概也可以得
出压缩率大概是 21 倍。
可以用下面这个命令压缩一个文件夹。
$ tar -czf - . | pv > out.tgz
117MB 0:00:55 [2.7MB/s] [> ]
在上面的例子中我们可以看到下面 gzip 一行的输出中没有百分比,因为 pv 没法知道 gzip 之后的最终大小,所以没有办法计算进度。可以使用 -s
指定大小。
$ tar -cf - . | pv -s $(du -sb . | awk "{print $1}") | gzip > out.tgz
253MB 0:00:05 [46.7MB/s] [> ] 1% ETA 0:04:49
© 2016-2022 Yifei Kong. Powered by ynotes
All contents are under the CC-BY-NC-SA license, if not otherwise specified.
Opinions expressed here are solely my own and do not express the views or opinions of my employer.
友情链接: MySQL 教程站