百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Linux系统之如何显示压缩/解压进度条

ahcoder 2025-02-11 10:51 23 浏览

关注我,不迷路,大家好,我是大王。--记录运维中遇到的故障及排查方法

演示环境:Centos 7.4

一、背景说明

有时候写脚本,为了美观或者看执行进度,需要展示进度条,今天就介绍一下如何展示,用到的工具为PV。

二、pv命令的定义和作用

pv是一个用于在Linux/Unix中显示进度条的命令行工具。

它可以结合其他命令和管道使用,并显示进度条以及估计剩余时间、传输速度等信息,方便用户了解操作进度和预计执行时间。

2.1 PV命令的语法

command | pv [options] | command

参数说明:
其中command可以是任何Linux命令或管道,
[options]是pv命令的选项,最终结果是将command的输出传输到另一个命令中,
pv命令会在中间显示进度条。

常用参数:

  • -s, --size size:指定要传输的数据总大小,可以是字节、KB、MB等单位。如果不指定,则pv会自动计算。
  • -n, --numeric:将传输速度显示为数字,而不是文本形式。
  • -q, --quiet:不显示pv命令的信息、警告或错误消息。
  • -W, --wait:在输出所有数据之前等待一段时间。
  • -B, --buffer-size size:指定pv内部缓存大小。如果不指定,则pv使用默认值。
  • -F, --format format:指定pv进度条的样式。例如:%N(已传输的数据大小)、%p(百分比)、%t(剩余时间)等。

2.2 pv安装

默认系统上面是不安装PV命令的,需要我们手动安装

安装命令

在Debian/Ubuntu系统中,可以通过apt-get命令安装:
sudo apt-get update
sudo apt-get install pv

在CentOS/RHEL系统中,可以通过yum命令安装:
yum -y install epel-release
yum -y install pv

2.3 选项参数

如果没有指定选项,默认使用 -p, -t, -e, -r 和 -b 选项

[root@wangzy lygtest]# pv -h
Usage: pv [OPTION] [FILE]...
Concatenate FILE(s), or standard input, to standard output,
with monitoring.

-p, --progress           显示进度条
-t, --timer              显示已用时间
-e, --eta                显示预计到达时间 (完成)
-I, --fineta             显示绝对估计到达时间
                         (完成)
-r, --rate               显示数据传输速率计数器
-a, --average-rate       显示数据传输平均速率计数器
-b, --bytes              显示传输的字节数
-T, --buffer-percent     显示正在使用的传输缓冲区百分比
-A, --last-written 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               行以零结尾
-i, --interval SEC       每SEC秒更新一次
-w, --width WIDTH        假设终端的宽度为WIDTH个字符 
-H, --height HEIGHT      假设终端高度为HEIGHT行
-N, --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       将进程ID保存在FILE中 
-d, --watchfd PID[:FD]   监视进程PID,打开的文件FD
-h, --help               显示帮助
-V, --version            显示版本信息

常用参数:

  • -s, --size size:指定要传输的数据总大小,可以是字节、KB、MB等单位。如果不指定,则pv会自动计算。
  • -n, --numeric:将传输速度显示为数字,而不是文本形式。
  • -q, --quiet:不显示pv命令的信息、警告或错误消息。
  • -W, --wait:在输出所有数据之前等待一段时间。
  • -B, --buffer-size size:指定pv内部缓存大小。如果不指定,则pv使用默认值。
  • -F, --format format:指定pv进度条的样式。例如:%N(已传输的数据大小)、%p(百分比)、%t(剩余时间)等。

三、实例演示

说明:如果没有指定选项,默认使用 -p, -t, -e, -r 和 -b 选项

3.1 将一个文件复制到另一个目录,并在过程中显示进度条

当传输速率很快时,我们看的不清晰,可以加 -L 参数更加方便查看效果

[root@wangzy pv-test]# ls
promethus_grafana_out.tar.gz
[root@wangzy pv-test]# 
[root@wangzy pv-test]# mkdir wangzy{0..4}
[root@wangzy pv-test]# ls
promethus_grafana_out.tar.gz  wangzy0  wangzy1  wangzy2  wangzy3  wangzy4
[root@wangzy pv-test]# pv promethus_grafana_out.tar.gz >wangzy0/promethus_grafana_out.tar.gz

3.2 使用 -L 参数进行修改传输速率

如限制传输速率为10M

[root@wangzy pv-test]# pv -L 10m  promethus_grafana_out.tar.gz >wangzy1/promethus_grafana_out.tar.gz

3.3 解压缩文件时,使用pv命令显示解压缩进度

# 解压到当前目录
[root@wangzy pv-test]# pv promethus_grafana_out.tar.gz |tar xzf -
  
# 解压到指定目录
[root@wangzy pv-test]# pv promethus_grafana_out.tar.gz |tar xzf - -C wangzy2/

3.4 压缩目录

[root@wangzy pv-test]# tar cf - wangzy0 | pv -L 100m| gzip > wangzy.tar.gz

不知道为什么,我这边压缩的进度条看起来不是很好看……

四、总结

pv命令是Linux系统中显示进度条最流行的命令之一,它可以方便地结合其他命令和管道使用,帮助用户了解操作进度和预计执行时间。

当您需要对文件、网络传输或其他操作的进度进行更详细的监测时,建议使用pv命令以便更好的控制和了解整个操作进度

相关推荐

PC也能装MAX OS X

MACBOOK向来以其时尚的外观以及易用的OSX操作系统成为了时(zhuang)尚(bi)人士的最爱。但是其动不动就上万元的昂贵价格,也将一批立志时(zhuang)尚(bi)人士的拒之门外。但是最近...

一千多元的笔记本能买吗?英特尔11代+大屏幕,豆小谷值得选吗?

前言:有很多粉丝都问过本人,一千多元到底能买到什么样的笔记本?在此笔者只想说,这样的资金预算真的太低了!如果想买全新的,那大概率买的就是性能比较拉垮的上网本,比如搭载英特赛扬N系列、J系列处理器的轻薄...

首款配备骁龙X Elite处理器的Linux笔记本:采用KDE Plasma桌面环境

德国Linux硬件供应商TUXEDOComputers宣布正在开发一款配备高通骁龙XElite处理器(SnapdragonXEliteSoC)的ARM笔记本电脑,内部将该...

System76推出Gazelle Linux笔记本:配酷睿i9-13900H处理器

IT之家3月30日消息,主打Linux硬件的厂商System76于今天发布了新一代Gazelle笔记本电脑,共有15英寸和17英寸两个版本,将于3月30日接受预订,...

Kubuntu Focus Xe Gen 2笔记本发布,预装Linux系统

IT之家3月25日消息,KubuntuFocusXeGen2笔记本于近日发布,这是一款预装Kubuntu22.04LTSGNU/Linux发行版的轻薄本。上一代Kub...

这台Linux笔记本已用上英特尔12代酷睿,最高可选i7-1255U、卖1149美元起

Linux笔记本可能因为比较小众,一般都是拿Windows笔记本换个系统而来,硬件上也会落后同期Windows笔记本一两代,不过现在专门做Linux电脑的System76,推出了一款名为LemurP...

戴尔Inspiron 14 Plus骁龙笔记本迎新补丁,支持启动Linux

IT之家4月25日消息,科技媒体phoronix今天(4月25日)发布博文,报道称最新发布的Linux内核补丁,针对骁龙芯片的戴尔Inspiron14Plus笔记本,让其...

TUXEDO推出InfinityFlex 14二合一Linux笔记本,配i5-1335U

IT之家8月12日消息,Linux硬件企业TUXEDO当地时间本月2日推出了InfinityFlex14二合一Linux笔记本。该笔记本搭载2+8核的英特尔酷睿i5-...

登月探测器嫦娥使用什么操作系统,是Linux还是其它自主研发?

这是不是国家机密啊。事实什么样的不知道,但是从美国的探测器来看,就算不是也是相似的东西。下面我来说说我知道的。龙芯已经随北斗卫星上天了.就算登月探测器嫦娥是用"龙芯+Linux"也不出奇.没必要...

DNS分离解析实验

如果本文对你有帮助,欢迎关注、点赞、收藏、转发给朋友,让我有持续创作的动力目录一、分离解析概述二、实验需求三、实验步骤3.1双网卡服务器配置3.1.1添加两张网卡(内外网)3.1.2对两个网卡进...

一个小实验巩固下进程管理

先回顾下之前的三篇文章:Linux进程在内核眼中是什么样子的?Linux进程线程是如何创建的?Linux是如何调度进程的?通过这三篇文章的学习我们知道,无论内核进程还是用户进程,都是可以用task...

VMware Kali无线WIFI密码破解

WIFI破解前准备工作一张支持Kali系统监听的无线网卡VMware虚拟机安装好Kali系统(本实验用的是Kali2022版本)Kali系统下载、安装官方网站:https://www.kali.or...

python多进程编程

forkwindows中是没有fork函数的,一开始直接在Windows中测试,直接报错importosimporttimeret=os.fork()ifret==0:...

拔电源十台电脑藏后门!德国实验惊曝Windows致命漏洞

2025年4月15日,央视突然曝出一个超级大新闻!原来美国国家安全局通过黑龙江,往微软Windows系统里发送加密信息,激活了系统里藏着的后门程序,想破坏哈尔滨亚冬会!这消息一出来,大家才发现,竟然已...

深度探索RK3568嵌入式教学平台实战案例:设备驱动开发实验

一、产品简介TL3568-PlusTEB人工智能实验箱国产高性能处理器64位4核低功耗2.0GHz超高主频1T超高算力NPU兼容鸿蒙等国产操作系统二、实验目的1、熟悉基本字符设备的驱动程序...