使用 pv 命令监控 linux 命令的执行进度

如果你是一个 linux 系统管理员,那么毫无疑问你必须花费大量的工作时间在命令行上:安装和卸载软件,监视系统状态,复制、移动、删除文件,查错,等等。很多时候都是你输入一个命令,然后等待很长时间直到执行完成。也有的时候你执行的命令挂起了,而你只能猜测命令执行的实际情况。

通常 linux 命令不提供和进度相关的信息,而这些信息特别重要,尤其当你只有有限的时间时。然而这并不意味着你是无助的——现在有一个命令,pv,它会显示当前在命令行执行的命令的进度信息。在本文我们会讨论它并用几个简单的例子说明其特性。

PV 命令

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

"要使用 PV,需要配合合适的选项,把它放置在两个进程之间的管道。命令的标准输入将会通过标准输出传进来的,而进度会被输出到标准错误输出。”

上述解释来自该命令的帮助页。

下载和安装

Debian 系的操作系统,如 Ubuntu,可以简单的使用下面的命令安装 PV:

  1. sudo apt-get install pv

如果你使用了其他发行版本,你可以使用各自的包管理软件在你的系统上安装 PV。一旦 PV 安装好了你就可以在各种场合使用它(详见下文)。需要注意的是下面所有例子都使用的是 pv 1.2.0。

特性和用法

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

然而pv 命令在这种情景下很有帮助。比如:

  1. pv /media/himanshu/1AC2-A8E3/fNf.mkv > ./Desktop/fnf.mkv

输出如下:

所以,如你所见,这个命令显示了很多和操作有关的有用信息,包括已经传输了的数据量,花费的时间,传输速率,进度条,进度的百分比,以及剩余的时间。

pv 命令提供了多种显示选项开关。比如,你可以使用-p 来显示百分比,-t 来显示时间,-r 表示传输速率,-e 代表eta(LCTT 译注:估计剩余的时间)。好事是你不必记住某一个选项,因为默认这几个选项都是启用的。但是,如果你只要其中某一个信息,那么可以通过控制这几个选项来完成任务。

这里还有一个-n 选项来允许 pv 命令显示整数百分比,在标准错误输出上每行显示一个数字,用来替代通常的可视进度条。下面是一个例子:

  1. pv -n /media/himanshu/1AC2-A8E3/fNf.mkv > ./Desktop/fnf.mkv

这个特殊的选项非常合适某些情境下的需求,如你想把用管道把输出传给dialog 命令。

接下来还有一个命令行选项,-L 可以让你修改 pv 命令的传输速率。举个例子,使用 -L 选项来限制传输速率为2MB/s。

  1. pv -L 2m /media/himanshu/1AC2-A8E3/fNf.mkv > ./Desktop/fnf.mkv

如上图所见,数据传输速度按照我们的要求被限制了。

另一个pv 可以帮上忙的情景是压缩文件。这里有一个例子可以向你解释如何与压缩软件Gzip 一起工作。

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

结论

如上所述,pv 是一个非常有用的小工具,它可以在命令没有按照预期执行的情况下帮你节省你宝贵的时间。而且这些显示的信息还可以用在 shell 脚本里。我强烈的推荐你使用这个命令,它值得你一试。

时间: 2024-06-13 15:11:30

使用 pv 命令监控 linux 命令的执行进度的相关文章

pv命令监控Linux命令的执行进度

http://www.techweb.com.cn/network/system/2015-12-14/2241124.shtml yum install -y pv cp mysql-5.6.28-linux-glibc2.5-x86_64.tar.gz mysql-5.6.28-linux-glibc2.5-x86_64aa|pv -tb >/dev/null 0B 0:00:07 centos通过yum安装的pv命令版本较低 版本是1.1,还不支持-a参数,单纯靠-bt参数看起来还是有点累

《paste命令》-linux命令五分钟系列之二十

本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. === [正文开始] 在本系列上一篇文章中涉及到了cut命令(<cut命令>-linux命令五分钟系列之十九),本文章介绍的这个paste命令,是一个专门和cut对着干的命令,作用是将几个文件拼凑在一起. 1 paste的拼凑原理是什么? 这个很简单,和cut的原理几乎一样,就是将几个文件的相应行

cmd命令和linux命令的区别

cmd命令和linux命令看起来很相似,都是在一个控制台输入一些特定的指令去完成一些特定的操作.可是用过的朋友就会发现这些指令是有很多不同的,可是到底有什么不同,要说又说不上来,所以要了解一下. cmd命令的起源:DOS DOS(Disk Operating System,磁盘操作系统),是Windows系统之前的一个操作系统名称,属于单用户单任务式的,特点通常是黑底白字,用户全靠键盘输入命令来完成所有工作.之后Windows诞生了,属于多用户多任务式的(系统名称都是多窗口),初期当然还得使DO

Linux学习笔记--top命令(监控linux系统状况的命令)

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,比如cpu.内存的使用等,类似于Windows的任务管理器. 1. 命令格式: top [选项] 2. 常用选项: "top -c" 显示完整的命令行而不只是显示命令名. "top -d" 指定每两次屏幕信息刷新之间的时间间隔. "top -n 3" 指定循环的次数为3次. "top -u 用户名" 指定用户名. "top -p 进

rm命令-每日Linux命令

rm命令简介 rm命令可以删除一个目录中的一个或者多个文件或者目录,也可以将某个目录及其下属的所有文件及其子目录均删除.对于链接文件,只是删除整个链接文件,而原有文件保持不变. 注意:使用rm命令要格外小心,尤其是新手.因为一旦删除了一个文件,就无法恢复它.(比如在/(根目录)下执行rm * -rf,那么整个系统就会毁在这个命令上.) 语法 rm (选项) (参数) 命令功能 删除一个目录中的一个或多个文件或目录,如果没有使用- r选项,则rm不会删除目录.如果使用 rm 来删除文件,通常仍可以

Vmstat命令监控Linux资源并将数据通过图形化方式显示

一.Vmstat基础知识 Vmstat可以实时查看系统资源使用情况,如cpu.mem.IO等 procsr 列表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu.b 列表示在等待资源的进程数,比如正在等待I/O.或者内存交换等.cpu 表示cpu的使其用状态us 列显示了用户方式下所花费 CPU 时间的百分比.us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序.sy 列显示了内核进程所花费的cpu时间的百分比.这里us

《ln命令》-linux命令五分钟系列之十八

本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. === [正文开始] ln是一个很神奇的命令,它可以创建一个文件的影子,也可以通过一个通道进入另一个地方.:)其实,所有的这些把戏都是通过软连接和硬连接实现的. 我们假设你已经阅读了“硬连接和软连接的原理-<别怕Linux编程>之七”这篇文章,并且对其原理有比较透彻的认识.下面开始ln命令的情景举

《cut命令》-linux命令五分钟系列之十九

本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. === [正文开始] 1 一两句话描述一下cut命令吧! 正如其名,cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的. cut是以每一行为一个处理对象的,这种机制和sed是一样的.(关于sed的入门文章将在近期发布) 2 cut一般以什么为依据呢? 也就是说,我怎么告诉cut我想定位到的剪切内容呢

【linux常用命令】linux命令工具基础

性能监控 监控CPU.内存.磁盘 top命令 crontab 让程序可以在半夜执行,在测试的时候省很多事. GDB 常用命令 进程管理 查看进程或者关闭进程 磁盘管理 查看当前磁盘使用情况,查看当前目录所占大小,以及打包压缩与解压缩. 文本处理  find.grep.xargs.sort.uniq.tr.cut.paste.wc.sed.awk sar详解 找出性能问题的利器