如何在CentOS/Fedora中跟踪命令(cp,dd,tar)的进度百分比
当我们使用简单的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