命令行终端下的处理进度提示工具 pv

版权声明:知识共享-署名-相同方式共享(CC-BY-SA) https://blog.csdn.net/engrossment/article/details/83864479

起因

最近在做一个开发板的系统启动卡的制作工具,纯 shell 实现。在实际使用的时候部分 SD 卡或读卡器的问题,导致整个做卡过程十分耗时,让执行制作的人很焦虑。于是开始考虑给这个做卡工具添加进度提示。

一开始是想着先使用 dd 之类的工具给这个 SD 卡做个测试,看看其数据写入速率如何。再根据这个速率计算还需要的剩余时间。结果测试出来的速率值很不靠谱,根本无法使用。再说,tar 解压文件系统到 SD 卡,需要操作大量的文件,其实也不适合用一个单纯的 dd 写入速率来衡量。

实现

放狗搜索发现有个工具叫 pv,挺有意思的。摸索一番,找到了满足需求的用法。

pv rootfs_v2.5.tar.bz2 | sudo tar jx -C fs

效果如下:

pv 工具的基本思想是先把数据经过它,然后再通过管道传递给真正需要处理数据的程序,这样,它就能够统计相关信息并进行显示了。

其他

在我的做卡工具中还需要复制大量文件,这个也有显示处理进度的需求。试了下 scp、rsync 等方法,但效果不太理想。后来干脆就继续使用上述 pv + tar 的方法来做这部分的工作了。

下面参考链接里有个挺有趣的东西,使用 pv 来控制终端字符的打印速度。方便的话建议执行一下以下命令看看,效果看起来很 Geek,有趣!

echo "Tecmint[dot]com is a community of Linux Nerds and Geeks" | pv -qL 10

参考

廖杰良 - 2018-11-8

猜你喜欢

转载自blog.csdn.net/engrossment/article/details/83864479
Pv