如何为Linux命令展示进度列

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

许多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将自动使用默认的pterb切换。

使用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命令。
-Rfack用于递归复制目录。
以下是命令的示例:

$cp -gR /home/theitroad /home/theitroad/Desktop

或者

# cp -R --progress-bar home/theitroad /home/theitroad/Desktop