如何为Linux命令展示进度列
许多Linux命令如DD,CP,Rsync和MV是渐进性的,但没有像运行一样显示进度条。
没有内置的方法来检查持续运营的进度,除了最近提交的少数命令(DD命令具有来自GNU Coreutils版本8.24的进度)。
在本文中,我们将查看某些Linux工具和选项,允许我们监视正在传输的数据的进度。
1)PV命令
PV是基于命令行的工具,允许我们监视使用管道传输数据的进度。
PV命令为我们提供以下信息的可视视图。
- 时间流逝
- 使用进度列完成的百分比。
- 当前的吞吐率。
- 总数据转移。
- ETA(预计时间)。
安装PV.
我们可以使用以下命令在发行版上安装PV
Fedora,Centos和Rhel
# yum install pv
Debian,Ubuntu和Linux Mint
# apt-get install pv
Gentoo Linux.
# emerge --ask sys-apps/pv
FreeBSD Linux.
# cd /usr/ports/sysutils/pv/ # make install clean
PV使用示例
PV的一般语法是PV [选项] [文件]
-p
开关转动进度条上,"-t"warch"激活总经过时间PV已运行,"-E""开关为基于传输速率和数据大小完成ETA完成," -R"开关显示了传输的当前速率,最后"-B"开关"显示到目前为止传输的数据总量。
使用GZIP监视创建存档的进度
在此示例中,我们在以下示例中使用PV与Gzip:
pv -tpre ~/Desktop/testfile.iso | gzip > ~/Desktop/testfile.gz
213MiB 0:00:14 [17.8MiB/s] [=========> ] 32% ETA 0:00:29
在此示例中,我们提供了交换机和所讨论的文件,然后将其向GZIP向GZIP注入到我们要归档的文件。
使用PV复制文件时监视进度
$pv ~/Desktop/testfolder/* > ~/Desktop/ 667MiB 0:00:13 [50.5MiB/s] [================================>] 100%
使用没有任何交换机的PV将自动使用默认的p
,t
,e
,r
和b
切换。
使用PV和Dialog命令创建对话框进度列
pv ~/Desktop/testfile.iso > ~/Desktop/destinationfile.iso | dialog --gauge "Progress" 10 70
2)进步
以前称为CV的进展是一种工具,它显示来自Coreutils基本命令的复制数据的百分比,如p,mv,dd,tar,gzip/gunzip,cat等。
它还可以提供另外的信息,如ETA和始终。
安装进度
我们可以使用这些步骤在任何发行版上安装进度。
sudo apt-get install libncurses5-dev (for Debian/Ubuntu) users.
# git clone https://github.com/Xfennec/progress.git # make # make install
与例子进行进度使用
进步的一般语法是观看进展-Q
。
这使我们可以在终端窗口中监控所有当前和即将到来的传输。
现在,将在进度窗口中检测到我们调用的任何Coreutils Utility,并在进度窗口中指示。
监控下载
progress -wc google-chrome
"-C"开关可用于监视Google-Chrome或者Firefox等命令名称
3)rsync.
rsync用于本地和远程同步文件。
rsync可用于复制文件,并且还可以在未使用外部应用程序的情况下显示进度。
安装rsync.
Fedora,Centos和Rhel
# yum install rsync
Debian,Ubuntu和Linux Mint
# apt-get install rsync
rsync用例子用例
我们需要使用具有-p
或者--progress
选项的rsync来显示文件传输过程中的进度。
rsync的基本语法是
rsync --progress source destination
或者
rsync -P source destination
要将zip文件从桌面复制到NewFolder,请输入:
$rsync -P ~/Desktop/myfiles.zip ~/Desktop/newfolder 321,683,456 45% 3.17MB/s 0:01:56
要将文件从/example/*.tar复制到名为[email protected]的远程服务器,请输入:
rsync -av -P /example/*.tar [email protected]:~
4)高级副本
高级副本或者ADVCPMV是CP和MV实用程序的MOD,它添加了进度条并提供有关正在进行的传输的一些信息。
安装高级副本
我们可以使用这些步骤在任何发行版上安装进度。
# wget http://ftp.gnu.org/gnu/coreutils/coreutils-8.21.tar.xz # tar xvJf coreutils-8.21.tar.xz # cd coreutils-8.21/ # wget https://github.com/atdt/advcpmv/blob/master/advcpmv-0.5-8.21.patch # patch -p1 -i advcpmv-0.5-8.21.patch # ./configure # make
运行"./configure"命令时,我们可能会收到此错误。
checking whether mknod can create fifo without root privileges... configure: error: in `/home/xxx/coreutils-8.21': configure: error: you should not run configure as root (set FORCE_UNSAFE_CONFIGURE=1 in environment to bypass this check) See `config.log' for more details
运行以下命令以修复该错误并再次重新运行./configure命令:
# export FORCE_UNSAFE_CONFIGURE=1
用这两个新命令替换原始CP和MV命令
# cp src/cp /usr/local/bin/cp # cp src/mv /usr/local/bin/mv
使用示例的高级副本使用
CP和MV命令保持不变,唯一的变化是将-g
或者- progress-bar
切换添加到CP命令。-R
fack用于递归复制目录。
以下是命令的示例:
$cp -gR /home/theitroad /home/theitroad/Desktop
或者
# cp -R --progress-bar home/theitroad /home/theitroad/Desktop