标签 pv 下的文章

 title=

在这篇文章中和 Carla Schroder 一起探索 Linux 中的一些鲜为人知的强大工具。

本文是一篇关于一些有趣但鲜为人知的工具 termsaverpvcalendar 的文章。termsaver 是一个终端 ASCII 屏保,pv 能够测量数据吞吐量并模拟输入。Debian 的 calendar 拥有许多不同的日历,并且你还可以制定你自己的日历。

终端屏保

难道只有图形桌面能够拥有有趣的屏保吗?现在,你可以通过安装 termsaver 来享受 ASCII 屏保,比如 matrix(LCTT 译注:电影《黑客帝国》中出现的黑客屏保)、时钟、星球大战以及两个 不太安全 not-safe-for-work (NSFW)的屏保。 NSFW 屏保还有很多。

termsaver 可以从 Debian/Ubuntu 的包管理器中直接下载安装,如果你使用别的不包含该软件包的发行版比如 CentOS,那么你可以从 termsaver.brunobraga.net 下载,然后按照安装指导进行安装。

运行 termsaver -h 来查看一系列屏保:

 randtxt        displays word in random places on screen
 starwars       runs the asciimation Star Wars movie
 urlfetcher     displays url contents with typing animation
 quotes4all     displays recent quotes from quotes4all.net
 rssfeed        displays rss feed information
 matrix         displays a matrix movie alike screensaver
 clock          displays a digital clock on screen
 rfc            randomly displays RFC contents
 jokes4all      displays recent jokes from jokes4all.net (NSFW)
 asciiartfarts  displays ascii images from asciiartfarts.com (NSFW)
 programmer     displays source code in typing animation
 sysmon         displays a graphical system monitor

 title=

图片 1: 星球大战屏保。

你可以通过运行命令 termsaver [屏保名] 来使用屏保,比如 termsaver matrix ,然后按 Ctrl+c 停止。你也可以通过运行 termsaver [屏保名] -h 命令来获取关于某一个特定屏保的信息。图片 1 来自 startwars 屏保,它运行的是古老但受人喜爱的 Asciimation Wars

那些不太安全(NSFW)的屏保通过在线获取资源的方式运行,我并不喜欢它们,但好消息是,由于 termsaver 是一些 Python 脚本文件,因此,你可以很容易的利用它们连接到任何你想要的 RSS 资源。

pv

pv 命令是一个非常有趣的小工具但却很实用。它的用途是监测数据复制的过程,比如,当你运行 rsync 命令或创建一个 tar 归档的时候。当你不带任何选项运行 pv 命令时,默认参数为:

  • -p :进程
  • -t :时间,到当前总运行时间
  • -e :预计完成时间,这往往是不准确的,因为 pv 通常不知道需要移动的数据的大小
  • -r :速率计数器,或吞吐量
  • -b :字节计数器

一次 rsync 传输看起来像这样:

$ rsync -av /home/carla/ /media/carla/backup/ | pv 
sending incremental file list
[...]
103GiB 0:02:48 [ 615MiB/s] [  <=>

创建一个 tar 归档,就像下面这个例子:

$ tar -czf - /file/path| (pv  > backup.tgz)
 885MiB 0:00:30 [28.6MiB/s] [  <=>

pv 能够监测进程,因此也可以监测 Web 浏览器的最大活动,令人惊讶的是,它产生了如此多的活动:

$ pv -d  3095                                                                                                             
  58:/home/carla/.pki/nssdb/key4.db:    0 B 0:00:33 
  [   0 B/s] [<=>                                                                           ] 
  78:/home/carla/.config/chromium/Default/Visited Links:  
  256KiB 0:00:33 [   0 B/s] [<=>                                                      ] 
  ] 
  85:/home/carla/.con...romium/Default/data_reduction_proxy_leveldb/LOG:  
  298 B 0:00:33 [   0 B/s] [<=>                                       ] 

在网上,我偶然发现一个使用 pv 最有趣的方式:使用 pv 来回显输入的内容:

$ echo "typing random stuff to pipe through pv" | pv -qL 8
typing random stuff to pipe through pv

普通的 echo 命令会瞬间打印一整行内容。通过管道传给 pv 之后能够让内容像是重新输入一样的显示出来。我不知道这是否有实际的价值,但是我非常喜欢它。-L 选项控制回显的速度,即多少字节每秒。

pv 是一个非常古老且非常有趣的命令,这么多年以来,它拥有了许多的选项,包括有趣的格式化选项,多种输出选项,以及传输速度修改器。你可以通过 man pv 来查看所有的选项。

/usr/bin/calendar

通过浏览 /usr/bin 目录以及其他命令目录和阅读 man 手册,你能够学到很多东西。在 Debian/Ubuntu 上的 /usr/bin/calendar 是 BSD 日历的一个变种,但它漏掉了月亮历和太阳历。它保留了多个日历包括 calendar.computer, calendar.discordian, calendar.music 以及 calendar.lotr。在我的系统上,man 手册列出了 /usr/bin/calendar 里存在的不同日历。下面这个例子展示了指环王日历接下来的 60 天:

$ calendar -f /usr/share/calendar/calendar.lotr  -A 60
Apr 17  An unexpected party
Apr 23  Crowning of King Ellesar
May 19  Arwen leaves Lorian to wed King Ellesar
Jun 11  Sauron attacks Osgilliath

这些日历是纯文本文件,因此,你可以轻松的创建你自己的日历。最简单的方式就是复制已经存在的日历文件的格式。你可以通过 man calendar 命令来查看创建个人日历文件的更详细的指导。

又一次很快走到了尽头。你可以花费一些时间来浏览你的文件系统,挖掘更多有趣的命令。

你可以通过来自 Linux 基金会和 edx 的免费课程 "Introduction to Linux" 来学习更过关于 Linux 的知识

(题图:CC Zero Pixabay)


via: https://www.linux.com/learn/intro-to-linux/2017/4/more-unknown-linux-commands

作者:CARLA SCHRODER 译者:ucasFL 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

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

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

PV 命令

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

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

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

下载和安装

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

sudo apt-get install pv

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

特性和用法

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

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

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

输出如下:

pv-copy

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

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

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

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

pv-numeric

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

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

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

pv-ratelimit

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

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

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

pv-gzip

结论

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


via: https://www.maketecheasier.com/monitor-progress-linux-command-line-operation/

作者:Himanshu Arora 译者:ezio 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出