如何在CentOS/Fedora中跟踪命令(cp,dd,tar)的进度百分比

时间:2020-03-05 15:29:56  来源:igfitidea点击:

当我们使用简单的cp命令在无标志的情况下在终端中复制大文件时,有时我们可能会怀疑它是否真的在复制,或者该进程是否因某种原因而被阻塞,并且实际上永远无法完成。
输出不存在,我们很想使用Ctrl-C来结束中止该过程。
好吧,相反,我们可以在另一个终端窗口中下载progress实用程序,然后运行它以查看命令的实际作用。
进度包支持cp,mv,dd,tar,gzip/gunzip,cat和其他基本的coreutils命令,它提供了调用时完成的百分比,这将是pv命令的替代方法。
我应该在标题中提到这也将在centos 7上运行。

安装进度包

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

wget http://cbs.centos.org/kojifiles/packages/progress/0.13/1.el6/x86_64/progress-0.13-1.el6.x86_64.rpm
yum install progress-0.13-1.el6.x86_64.rpm

对于Fedora 24,我们可以简单地将其与yum或者dnf一起安装,它存在于主要存储库中。

sudo yum install progress

如何使用进度

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

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

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

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

progress
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命令的调用都显示出增加的完成百分比。

让我们也尝试tar命令。

互动方式

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

例如,进度-w将为我们提供更详细的视图。

progress -w
[ 6140] cp /home/miki/centos.iso
19.5% (771.5 MiB/3.9 GiB) 79.2 MiB/s remaining 0:00:40

并观察进度-w将每隔2秒为我们提供有关命令完成的交互式更新。
例如这样的例子:

Every 2.0s: progress -w Sun Sep 4 13:39:35 2015
[ 6312] cp /home/miki/centos.iso
82.9% (3.2 GiB/3.9 GiB) 33.9 MiB/s remaining 0:00:19