pv

pv

显示当前在命令行执行的命令的进度信息,管道查看器

补充说明

pv命令 Pipe Viewer 的简称,由Andrew Wood 开发。意思是通过管道显示数据处理进度的信息。这些信息包括已经耗费的时间,完成的百分比(通过进度条显示),当前的速度,全部传输的数据,以及估计剩余的时间。

下载安装

# Debian 系的操作系统,如 Ubuntu
sudo apt-get install pv

# RedHat系的则这样:
yum install pv

语法

pv(选项)(参数)
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   显示上次写入的字节数
-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            显示版本信息

实例

我们(在 linux 上使用命令行的用户)的大多数使用场景都会用到的命令是从一个 USB 驱动器拷贝电影文件到你的电脑。如果你使用 cp 来完成上面的任务,你会什么情况都不清楚,直到整个复制过程结束或者出错。

# 复制文件会有进度
linux [master●] % pv ~/Downloads/CentOS-7-x86_64-Minimal-1511.iso > ~/Desktop/CentOS-7-x86_64-Minimal-1511.iso
# 下面输入信息
552MiB 0:00:02 [ 212MiB/s] [==================>           ] 91% ETA 0:00:00

# -L 可以让你修改 pv 命令的传输速率。
# 使用 -L 选项来限制传输速率为2MB/s。
pv -L 2m /media/himanshu/1AC2-A8E3/fNf.mkv > ./Desktop/fnf.mkv 

复制文件时显示进度条(如果没有指定选项,默认使用 -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%

字符一个个匀速在命令行中显示出来

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

压缩文件展示进度信息

pv /media/himanshu/1AC2-A8E3/fnf.mkv | gzip > ./Desktop/fnf.log.gz 

用 dd 命令将 iso 写入磁盘,pv来实现进度条的显示

sudo pv -cN source < /Users/kacperwang/Downloads/CentOS-7-x86_64-Everything-1511.iso | sudo dd of=/dev/disk2 bs=4m
## 显示下面进度
source:  5.2GiB 5:11:41 [ 503KiB/s] [=====================>       ] 71% ETA 2:01:56

在linux上, 如果执行的一些命令或者一些脚本需要花费很长时间, 但又不能拿出更多的精力反复盯着有没有执行结束, 这时候可以用pv监听PID, 任务完成后通过网络通知到微信或者钉钉, 这样就可以腾出来精力做其他的事, 是不是很棒

$ pv -d $(ps -ef | grep -v grep | grep "<脚本或命令的关键字>" | awk '{print $2}') && <这里执行发通知脚本或者命令,脚本或命令需要提前调试好>

注意

  1. 选项”-d, –watchfd PID[:FD]”, 是在1.6.6版本中才有的参数,如果使用需要pv升级到大于等于1.6.6的版本
  2. CentOS7的Yum仓库里pv最新的是1.4.6版本,1.6.6版本是发布在CentOS8里面的,如果需要,可以将CentOS8里的pv下载到本地电脑上或者本地的Yum私服里, 这个是下载地址, 可以根据自己不同的架构下载, 1.6.6的安装: rpm -ivh pv-1.6.6-7.el8.x86_64.rpm -U

若文章对你有帮助,可以点赞或打赏支持我们。发布者:Aurora,转载请注明出处:http://61.174.243.28:13541/AY-knowledg-hub/pv/

(0)
AuroraAurora站点维系者
上一篇 2024年 3月 1日 下午4:39
下一篇 2024年 3月 1日 下午4:40

相关推荐

  • htop

    文章目录htop补充说明htop 安装语法参数参数示例选项Htop设定1. Meters2. Display options3. Colors4. Colums htop [非内部…

    入门教程 2023年 12月 15日
  • 使用内存管理工具

    文章目录简介面临的问题内存管理规则分析内存分配的步骤 简介 iOS下内存管理的基本思想就是引用计数,通过对象的引用计数来对内存对象的生命周期进行控制。具体到编程时间方面,主要有两种…

    2023年 4月 1日
  • Git 工作区、暂存区和版本库

    基本概念 我们先来理解下 Git 工作区、暂存区和版本库概念: 工作区:就是你在电脑里能看到的目录。 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 i…

    2024年 4月 30日
  • dd

    文章目录dd补充说明语法选项实例 dd 复制文件并对原文件的内容进行转换和格式化处理 补充说明 dd命令 用于复制文件并对原文件的内容进行转换和格式化处理。dd命令功能很强大的,对…

    入门教程 2023年 12月 7日
  • pssh

    文章目录pssh补充说明安装pssh选项实例 pssh 批量管理执行 补充说明 pssh命令 是一个python编写可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中…

    入门教程 2024年 3月 1日
  • openssl

    文章目录openssl补充说明实例 openssl 强大的安全套接字层密码库 补充说明 OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理…

    入门教程 2024年 3月 1日
  • HTML 元素

    HTML 文档由 HTML 元素定义。 文章目录HTML 元素HTML 元素语法嵌套的 HTML 元素HTML 文档实例HTML 实例解析不要忘记结束标签HTML 空元素HTML …

    入门教程 2023年 4月 11日
  • join

    文章目录join补充说明语法选项参数常见用法 join 两个文件中指定栏位内容相同的行连接起来 补充说明 join命令 用来将两个文件中,制定栏位内容相同的行连接起来。找出两个文件…

    入门教程 2023年 12月 19日
  • sshd

    文章目录sshd补充说明语法选项 sshd openssh软件套件中的服务器守护进程 补充说明 sshd命令 是openssh软件套件中的服务器守护进程。 语法 sshd(选项) …

    入门教程 2024年 3月 11日
  • xlsclients

    文章目录xlsclients补充说明语法选项 xlsclients 列出显示器中的客户端应用程序 补充说明 xlsclients命令 用来列出显示器中的客户端应用程序。 语法 xl…

    入门教程 2024年 3月 11日

发表回复

登录后才能评论
Translate »