首頁 > 軟體

如何使用 pv 命令監控 Linux 命令的執行進度

2020-06-16 17:48:56

如果你是一個 Linux 系統管理員,那麼毫無疑問你必須花費大量的工作時間在命令列上:安裝和解除安裝軟體,監視系統狀態,複製、移動、刪除檔案,查錯,等等。很多時候都是你輸入一個命令,然後等待很長時間直到執行完成。也有的時候你執行的命令掛起了,而你只能猜測命令執行的實際情況。

通常 Linux 命令不提供和進度相關的資訊,而這些資訊特別重要,尤其當你只有有限的時間時。然而這並不意味著你是無助的——現在有一個命令,pv,它會顯示當前在命令列執行的命令的進度資訊。在本文我們會討論它並用幾個簡單的例子說明其特性。

 

PV 命令

PV 由Andrew Wood 開發,是 Pipe Viewer 的簡稱,意思是通過管道顯示資料處理進度的資訊。這些資訊包括已經耗費的時間,完成的百分比(通過進度條顯示),當前的速度,全部傳輸的資料,以及估計剩餘的時間。

"要使用 PV,需要配合合適的選項,把它放置在兩個進程之間的管道。命令的標準輸入將會通過標準輸出傳進來的,而進度會被輸出到標準錯誤輸出。”

上述解釋來自該命令的幫助頁。

 

下載和安裝

Debian 系的作業系統,如 Ubuntu,可以簡單的使用下面的命令安裝 PV:

  1. sudoapt-get install pv

如果你使用了其他發行版本,你可以使用各自的包管理軟體在你的系統上安裝 PV。一旦 PV 安裝好了你就可以在各種場合使用它(詳見下文)。需要注意的是下面所有例子都使用的是 pv 1.2.0。

 

特性和用法

我們(在 linux 上使用命令列的使用者)的大多數使用場景都會用到的命令是從一個 USB 驅動器拷貝電影檔案到你的電腦。如果你使用 cp 來完成上面的任務,你會什麼情況都不清楚,直到整個複製過程結束或者出錯。

然而pv 命令在這種情景下很有幫助。比如:

  1. pv/media/himanshu/1AC2-A8E3/fNf.mkv >./Desktop/fnf.mkv

輸出如下:

pv-copy

所以,如你所見,這個命令顯示了很多和操作有關的有用資訊,包括已經傳輸了的資料量,花費的時間,傳輸速率,進度條,進度的百分比,以及剩餘的時間。

pv 命令提供了多種顯示選項開關。比如,你可以使用-p 來顯示百分比,-t 來顯示時間,-r 表示傳輸速率,-e 代表eta(LCTT 譯註:估計剩餘的時間)。好事是你不必記住某一個選項,因為預設這幾個選項都是啟用的。但是,如果你只要其中某一個資訊,那麼可以通過控制這幾個選項來完成任務。

這裡還有一個-n 選項來允許 pv 命令顯示整數百分比,在標準錯誤輸出上每行顯示一個數位,用來替代通常的可視進度條。下面是一個例子:

  1. pv-n /media/himanshu/1AC2-A8E3/fNf.mkv >./Desktop/fnf.mkv

pv-numeric

這個特殊的選項非常合適某些情境下的需求,如你想把用管道把輸出傳給dialog 命令。

接下來還有一個命令列選項,-L 可以讓你修改 pv 命令的傳輸速率。舉個例子,使用 -L 選項來限制傳輸速率為2MB/s。

  1. pv-L 2m/media/himanshu/1AC2-A8E3/fNf.mkv >./Desktop/fnf.mkv

pv-ratelimit

如上圖所見,資料傳輸速度按照我們的要求被限制了。

另一個pv 可以幫上忙的情景是壓縮檔案。這裡有一個例子可以向你解釋如何與壓縮軟體Gzip 一起工作。

  1. pv/media/himanshu/1AC2-A8E3/fnf.mkv | gzip >./Desktop/fnf.log.gz

pv-gzip

 

結論

如上所述,pv 是一個非常有用的小工具,它可以在命令沒有按照預期執行的情況下幫你節省你寶貴的時間。而且這些顯示的資訊還可以用在 shell 指令碼裡。我強烈的推薦你使用這個命令,它值得你一試。


via: https://www.maketecheasier.com/monitor-progress-linux-command-line-operation/

作者:Himanshu Arora 譯者:ezio 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

本文永久更新連結地址http://www.linuxidc.com/Linux/2015-12/126235.htm


IT145.com E-mail:sddin#qq.com