Linux系统下pv命令的一些使用技巧小结

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

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

  PV 命令

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

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

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

  下载和安装

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

  代码如下:

  sudo apt-get install pv

  RedHat系的则这样:

  代码如下:

  # yum install pv

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

  特性和用法

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

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

  代码如下:

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

  输出如下:


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

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

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

  代码如下:

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


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

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

  代码如下:

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


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

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

  代码如下:

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


  有时候我们在电影屏幕上看到一些字幕一个个匀速显示出来,像有人在边敲键盘,边显示一样。Linux上的pv命令可以实现这种效果。

  运行如下命令:

  代码如下:

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

  效果如下:

时间: 2024-08-03 06:02:39

Linux系统下pv命令的一些使用技巧小结的相关文章

Linux系统下apachectl命令使用说明

  linux中的apachectl命令其设计意图是帮助管理员控制Apache httpd后台守护进程的功能.apachectl脚本有两种操作模式.第一,作为简单的httpd的前端程序,设置所有必要的环境变量,然后启动httpd ,并传递所有的命令行参数.第二,作为SysV初始化脚本,接受简单的一个单词的参数,如:start, restart, stop ,并把他们翻译为适当的信号发送给httpd .下面就和小编一起看看Linux系统apachectl命令使用说明的详细版本吧! 功能说明:可用来

Linux系统下tar命令的使用技巧总结

  Linux tar 命令是归档或分发文件时的强大武器.GNU tar 归档包可以包含多个文件和目录,还能保留其文件权限,它还支持多种压缩格式.Tar 表示 "Tape Archiver",这种格式是 POSIX 标准. Tar 文件格式 tar 压缩等级简介: 无压缩 没有压缩的文件用 .tar 结尾. Gzip 压缩 Gzip 格式是 tar 使用最广泛的压缩格式,它能快速压缩和提取文件.用 gzip 压缩的文件通常用 .tar.gz 或 .tgz 结尾.这里有一些如何创建和解压

linux系统下pwd命令用法详解

  Linux中用 pwd 命令来查看"当前工作目录"的完整路径. 简单得说,每当你在终端进行操作时,你都会有一个当前工作目录. 在不太确定当前位置时,就会使用pwd来判定当前目录在文件系统内的确切位置. 1.命令格式: pwd [选项] 2.命令功能: 查看"当前工作目录"的完整路径 3.常用参数: 一般情况下不带任何参数 如果目录是链接时: 格式:pwd -P 显示出实际路径,而非使用连接(link)路径. 4.常用实例: 实例1:用 pwd 命令查看默认工作目

Linux系统下wget命令的使用教程

  一.Linux wget简介 wget是linux上的命令行的下载工具.这是一个GPL许可证下的自由软件.Linux wget支持HTTP和FTP协议,支持代理服务器和断点续传功能,能够自动递归远程主机的目录,找到合乎条件的文件并将其下载到本地硬盘上;如果必要,Linux wget将恰当地转换页面中的超级连接以在本地生成可浏览的镜像.由于没有交互式界面,Linux wget可在后台运行,截获并忽略HANGUP信号,因此在用户推出登录以后,仍可继续运行.通常,Linux wget用于成批量地下

Linux系统下df命令的11个实例分享

df 即"可用磁盘"disk free,用于显示文件系统的磁盘使用情况.默认情况下,df 命令将以每块 1K 的单位进行显示所有当前已挂载的文件系统,如果你想以人类易读的格式显示 df 命令的输出,像这样"df -h"使用 -h 选项.在这篇文章中,我们将讨论 df 命令在 Linux 下11种不同的实例. 在 Linux 下 df 命令的基本格式为: # df {options} {mount_point_of_filesystem} 在 df 命令中可用的选项有

在Windows系列中的Linux系统下“Which”命令的使用方法介绍

在Linux下,有一个命令叫做which,它可以在Path中寻找某个命令所在的目录并显示出来. Linux下: [adam@i ase adam]$ which ls /bin/ls [adam@i ase adam]$ which rm /bin/rm 在NT的Resource Kit中有一个where.exe,它也有相同的功效,不过Resource Kit是收费的,在这里我们可以作一个批处理文件来实现这个功能. 使用记事本编辑一个which.bat,并将其存放在Wi t目录或者其他Path变

Linux系统下chkconfig命令使用详解

  chkconfig命令可以用来检查.设置系统的各种服务 使用语法: chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset] 参数用法: --addà增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据. --delà删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据. --leve

Linux系统下在命令行中压缩JPEG图像的方法

  如今拍照设备(如智能手机.数码相机)拍出来的图片分辨率越来越大.甚至3630万像素的Nikon D800已经冲入市场,并且这个趋势根本停不下来.如今的拍照设备不断地提高着照片分辨率,使得我们不得不压缩后,再上传到有储存限制.带宽限制的云. 事实上,这里有一个非常简单的方法压缩JPEG图像.一个叫"jpegoptim"命令行工具可以帮助你"无损"美化JPEG图像,让你可以压缩JPEG图片而不至于牺牲他们的质量.万一你的存储空间和带宽预算真的很少,jpegoptim

Linux系统下touch命令的使用方法

  1.命令格式: touch [选项]... 文件... 2.命令参数: -a 或--time=atime或--time=access或--time=use 只更改存取时间. -c 或--no-create 不建立任何文档. -d 使用指定的日期时间,而非现在的时间. -f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题. -m 或--time=mtime或--time=modify 只更改变动时间. -r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相