当您使用简单的cp命令在没有标志的情况下复制终端中的大文件时,您有时可能会怀疑它是否真的在复制或者进程被某种方式阻止,它实际上永远不会完成。 输出不存在,您很想按Ctrl-C结束中止进程。 那么,您可以在另一个终端窗口中下载progress实用程序并运行它以查看命令实际执行的操作。 Progress包支持cp,mv,dd,tar,gzip / gunzip,cat和其他基本的coreutils命令,它给出了调用时的完成百分比,这将是pv命令的替代方法。 我应该在标题中提到这也适用于centos 7 。

安装Progress包

对于CentOS 6和7(当然是相同的RHEL),您需要使用wget 下载进度包 ,因为它不在EPEL存储库或基础中。

[root@localhost opt]# wget http://cbs.centos.org/kojifiles/packages/progress/0.13/1.el6/x86_64/progress-0.13-1.el6.x86_64.rpm

Progress_java

[root@localhost opt]# yum install progress-0.13-1.el6.x86_64.rpm

Progress_java_02

对于Fedora 24,你可以简单地用yum或dnf安装它,它存在于主存储库中。

[root@localhost opt]# sudo yum 安装进度

如何使用进度

由于我的CentOS 6 VM上没有任何大文件,我将使用Fedora主机来测试命令。 我将抓取任何大文件,然后将其复制到随机目录。对于这个例子,它将是一部电影。

然后在另一个终端窗口中,让我们运行进度


我在cp命令完成的各个阶段运行了三次。最后,GNOME通知显示它已经结束了复制过程:


然后,如果我再次运行进度,它会显示以下输出:


进展 

No command currently running: cp, mv, dd, tar, cat, rsync, grep, fgrep, egrep, cut, sort, md5sum, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum, adb, gzip, gunzip, bzip2, bunzip2, xz, unxz, lzma, unlzma, zcat, bzcat, lzcat, or wrong permissions.

这是进度程序可以监视并显示进度活动的命令列表。

让我们接下来尝试使用dd命令


我们看到这里堆叠了两个终端窗口。最重要的一个似乎被卡住了,而底部的一个显示最高的一个根本没有卡住。 它正在完成它的工作,因为每次调用progress命令都会显示增加的完成百分比。

让我们尝试cp命令。

[root@instance-z78bdmwa 2day]# cp -rp /usr/ /tmp/2day/

[root@instance-z78bdmwa ~]# progress 

[15582] cp /usr/lib/firmware/brcm/brcmfmac43236b.bin

0.0% (0 / 340 KiB)


[root@instance-z78bdmwa ~]# progress 

[15582] cp /usr/lib/firmware/netronome/nic/nic_AMDA0097-0001_8x10.nffw

87.7% (1.2 MiB / 1.4 MiB)

互动方式

我们不一定需要多次调用progress命令。相反,我们可以使用交互选项。

在下一个示例中,您可以打开两个或更多终端窗口,然后分别运行coreutils命令,并使用其他终端窗口观察其进度,如下图所示。下面的命令将使您能够监视所有当前和即将发生的coreutils命令实例:


[root@instance-z78bdmwa ~]# watch progress -q

观察进度-w将每2秒关于命令完成给我们交互式更新。 例如这样:

[root@instance-z78bdmwa ~]# progress -w

结论

因此,如果您遇到任何列出的命令,现在您知道该怎么做了。您可以使用进度来了解您是否真的卡住了,或者只是文件太大而且需要时间。这样可以节省您一些时间,因为您将知道是等待还是取消某些命令。