許多 Linux 命令(如 dd、cp、rsync 和 mv)都是漸進式的,但在運行時沒有顯示進度條。 除了最近提交的少數命令( dd 命令在 GNU coreutils 版本 8.24 中具有 status=progress )之外,沒有內置的方法來檢查正在進行的操作的進度。
在本文中,我們將介紹某些 Linux 工具和選項,它們可讓您監控數據傳輸的進度。
另請閱讀: Pipe Viewer – Linux 中查看命令進度的工具
1) PV 命令
Pv 是一個基於命令行的工具,允許您監控使用管道傳輸的數據的進度。 pv 命令為您提供以下信息的可視化視圖。
- 時間流逝
- 使用進度條完成的百分比。
- 當前吞吐率。
- 傳輸的總數據。
- ETA(預計時間)。
安裝光伏
您可以使用以下命令在發行版上安裝 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 [Options] [File]
這 -p
選項打開進度條, -t
選項激活 pv 運行的總經過時間, -e
選項根據傳輸速率和數據大小提供完成的 ETA, -r
選項顯示當前的傳輸速率,最後顯示 -b
選項顯示到目前為止傳輸的數據總量。
使用 gzip 監控創建存檔的進度
在這 example,我們在下面使用 pv 和 gzip example:
pv -tpre ~/Desktop/testfile.iso | gzip > ~/Desktop/testfile.gz
213MiB 0:00:14 [17.8MiB/s] [=========> ] 32% ETA 0:00:29
在這 example,我們提供選項和相關文件,然後將其通過管道傳送到 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) 進展
Progress,以前稱為 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
帶示例的進度用法
進度的一般語法是 watch progress -q
. 這使您可以在終端窗口中監控所有當前和即將進行的傳輸。 現在,您調用的任何 coreutils 實用程序(如 cp 和 mv)都將被檢測到並顯示在進度窗口中。
監控下載
progress -wc google-chrome
這 -c
選項可用於監視命令名稱,如 google-chrome 或者 firefox
3) 同步
Rsync 用於本地和遠程同步文件。 Rsync 可用於復製文件,還可以在不使用外部應用程序的情況下顯示進度。
安裝 Rsync
Fedora, CentOS 和 RHEL
# yum install rsync
Debian、Ubuntu 和 Linux Mint
# apt-get install rsync
Rsync 使用示例
您需要將 rsync 與 -P
或者 --progress
在文件傳輸過程中顯示進度的選項。 rsync 的基本語法是
rsync --progress source destination
或者
rsync -P source destination
要將 zip 文件從桌面複製到新文件夾,請輸入:
$ 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 https://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
選項用於遞歸複製目錄。 這是一個 example 命令的:
$ cp -gR /home/linoxide /home/linoxide/Desktop
或者
# cp -R --progress-bar home/linoxide /home/linoxide/Desktop
我們已經看到了一些工具以及如何使用它們來監視命令的進度。 pv 命令易於設置並且可以監視任何命令行活動。 進度實用程序僅限於 coreutils 命令。 Rsync 具有監控文件傳輸的內置功能,高級副本是一個補丁,僅適用於 cp 和 mv 命令以顯示進度。 根據您的試用,您可以決定哪些最適合您。