如何使用“pv”命令监控(复制/备份/压缩)数据的进度
在 Linux 系统上进行备份和复制/移动大文件时,您可能希望监视正在进行的进度。许多终端工具没有允许您在管道中运行命令时查看进度信息的功能。在本文中,我们将了解一个重要的 Linux/Unix 命令,称为pv – Pipe Viewer,可以帮你解决问题。
Pv是一种基于终端的工具,可让您监控通过管道发送的数据的进度。使用pv命令时,它可以直观地显示以下信息:
-
已经过去的时间。
-
完成百分比包括一个进度条。
-
显示当前吞吐率。
-
传输的总数据。
-
和 ETA(预计时间)。
如何在 Linux 中安装 pv 命令?
大多数 Linux 发行版默认不安装pv命令,因此您可以按照以下步骤安装它。
首先,您需要打开EPEL 存储库,然后运行以下yum或dnf命令进行安装。
# yum install pv
OR
# dnf install pv
在其他 Linux 发行版上安装 pv
$ sudo emerge -a pv [Gentoo Linux]
$ sudo apk add pv [Alpine Linux]
$ sudo pacman -S pv [Arch Linux]
$ sudo zypper install pv [OpenSUSE]
如何在Linux中使用pv命令?
pv主要与其他无法监控正在进行的操作进度的程序一起使用。您可以使用它,将它放在两个进程之间的管道中,并提供适当的选项。pv的标准输入将传递到它的标准输出。它与 Linux 中的cat 命令具有相似的行为。
pv命令的语法如下:
$ pv file
$ pv options file
$ pv file > filename.out
$ pv options | command > filename.out
$ comand1 | pv | command2
显示修饰符下选项
-
要打开显示栏,请使用
-p
选项。 -
要查看经过的时间,请使用
--timer
选项。 -
要打开 ETA 计时器,它会尝试猜测在完成操作之前需要多长时间,请使用
--eta
选项。猜测是基于以前的传输速率和总数据大小。 -
要打开速率计数器,请使用
--rate
选项。 -
要显示到目前为止传输的数据总量,请使用
--bytes
选项。 -
要显示整数百分比的进度信息而不是视觉指示,请使用
-n
选项。当将pv与 dialog 命令一起使用以在对话框中显示进度时,这可能很好
输出修饰符下选项
-
要在显示进度信息之前等待第一个字节传输完毕,请使用该
--wait
选项。 -
要在计算百分比和 ETA 时假设要传输的数据总量为SIZE
--size SIZE
字节,请使用选项。 -
要指定更新之间的秒数,请使用该
--interval SECONDS
选项。 -
使用
--force
选项强制操作。当标准错误不是终端时,此选项强制 pv 显示视觉效果。 -
一般选项是
--help
显示使用信息,-version显示版本信息。
Linux 中使用 pv 命令示例
1、文件复制
例如,要将opensuse.vdi文件复制到/tmp/opensuse.vdi
# pv opensuse.vdi > /tmp/opensuse.vdi
2、制作zip文件
# pv /var/log/syslog | zip > syslog.zip
3、要在仅显示进度条的同时统计/etc/hosts文件中的行数、字数和字节数,请运行以下命令。
# pv -p /etc/hosts | wc
4、使用tar 实用程序监控创建备份文件的进度
# tar -czf - ./Downloads/ | (pv -p --timer --rate --bytes > backup.tgz)
5、使用dd命令将ISO文件写入U盘
# dd if=debian-10.11.0-amd64-DVD-1.iso | pv | dd of=/dev/sda bs=4M
6、使用pv和dialog终端工具一起创建对话进度条如下
# tar -czf - ./Documents/ | (pv -n > backup.tgz) 2>&1 | dialog --gauge "Progress" 10 70
小结
微信赞赏
支付宝赞赏