Pipe Viewer – 在 Linux 中查看命令進度的工具

當您處理某些進程時,有時您需要可視化文件操作的進程。 有些命令有一個參數可以幫助您查看進度,但對於那些沒有參數的命令,您需要使用另一種方​​法。 為了緩解這個問題,您可以使用管道查看器來指示您啟動的不同進程的進程。

什麼是管道查看器

管道查看器 (pv) 是一個 CLI 工具,它允許您通過提供完成百分比、ETA、傳輸的總數據、經過的時間等信息來監控數據通過管道的進度。如果您有一些進程,您可以插入管道查看器作為不同進程之間的正常管道,可以直觀地指示進程。

管道查看器工具選項:

  • -s, --size <size>: 假設要傳輸的數據總量是 SIZE。 您可以提供字節大小或使用單位 (b, kb, mb, gb, tb)。
  • -N, --name <name>: 輸出信息以 NAME 為前綴。

1) Pipe Viewer的安裝

管道查看器可以通過 node.js 安裝,如下所示:

# npm install -g pv
/usr/bin/pv -> /usr/lib/node_modules/pv/bin/pv.js
+ [email protected]
added 15 packages in 0.953s

管道查看器使用示例

在這一部分中,我將向您展示一些可以幫助您使用 pv 工具的不同示例

a) 顯示 dd 複製進度

您可以在使用 dd 命令時顯示文件複製的進度

# dd if=ubuntu-gnome-17.04-desktop-amd64.iso | pv | dd of=dest/ubuntu17
 0.00% | 0 ETA | 1.36GB Transferred | 95.71MB/s2964416+0 records in
2964416+0 records out
1517780992 bytes (1.5 GB) copied, 14.7174 s, 103 MB/s
 100.00% | 0 ETA | 1.41GB Transferred | 96.5MB/s2964416+0 records in
2964416+0 records out
1517780992 bytes (1.5 GB) copied, 14.7301 s, 103 MB/s

b) 一個 cat 命令進程

您可以決定在顯示消息日誌文件的內容時顯示 cat 命令的進度 example

# cat /var/log/messages | pv
Oct 13 03:36:02 localhost journal: Runtime journal is using 6.1M (max allowed 49.4M, trying to leave 74.1M free of 488.4M available → current limit 49.4M).
Oct 13 03:36:02 localhost kernel: Linux version 4.9.36-x86_64-linode85 ([email protected]) (gcc version 4.9.2 (Debian 4.9.2-10) ) #1 SMP Thu Jul 6 15:31:23 UTC 2017
........
........
100.00% | 0 ETA | 114.83KB Transferred | 114.83KB/s

c) 壓縮時顯示進度

在一些壓縮操作中,我們可能需要顯示進度。 可能如下

# tar -cf - /var/log/ | pv -N backlog | tar -C . -x
tar: Removing leading `/' from member names
backlog: 100.00% | 0 ETA | 660KB Transferred | 660KB/s

d) 可視化一個實時的 ssh 網絡

您可以通過 ssh 連接到主機並顯示實時傳輸速度。 在我們的情況下,我們會將所有傳輸的數據定向到 /dev/null 通過本地測試

# yes | pv | ssh paul@localhost "cat > /dev/null"
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is SHA256:lqes2c9Obi9lCSepwdT8uovcsmhcboUAsylF69MENDE.
ECDSA key fingerprint is MD5:38:67:a1:25:96:7b:69:02:f6:b8:ff:5d:ce:03:fd:a0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
paul@localhost's password: 
 0.00% | 0 ETA | 800.84MB Transferred | 17.04MB/s

Rocco Musolino 的 Unix 管道查看器不會像通過包安​​裝的“普通”管道查看器那樣顯示進度條的完成百分比。 我們可以看到,當我們面對不允許可視化進程進展的命令時,管道查看器很有趣。