如果你是一個(gè) linux 系統(tǒng)管理員,那么毫無(wú)疑問(wèn)你必須花費(fèi)大量的工作時(shí)間在命令行上:安裝和卸載軟件,監(jiān)視系統(tǒng)狀態(tài),復(fù)制、移動(dòng)、刪除文件,查錯(cuò),等等。很多時(shí)候都是你輸入一個(gè)命令,然后等待很長(zhǎng)時(shí)間直到執(zhí)行完成。也有的時(shí)候你執(zhí)行的命令掛起了,而你只能猜測(cè)命令執(zhí)行的實(shí)際情況。
通常 linux 命令不提供和進(jìn)度相關(guān)的信息,而這些信息特別重要,尤其當(dāng)你只有有限的時(shí)間時(shí)。然而這并不意味著你是無(wú)助的——現(xiàn)在有一個(gè)命令,pv,它會(huì)顯示當(dāng)前在命令行執(zhí)行的命令的進(jìn)度信息。在本文我們會(huì)討論它并用幾個(gè)簡(jiǎn)單的例子說(shuō)明其特性。
PV 命令
PV 由Andrew Wood 開(kāi)發(fā),是 Pipe Viewer 的簡(jiǎn)稱(chēng),意思是通過(guò)管道顯示數(shù)據(jù)處理進(jìn)度的信息。這些信息包括已經(jīng)耗費(fèi)的時(shí)間,完成的百分比(通過(guò)進(jìn)度條顯示),當(dāng)前的速度,全部傳輸?shù)臄?shù)據(jù),以及估計(jì)剩余的時(shí)間。
"要使用 PV,需要配合合適的選項(xiàng),把它放置在兩個(gè)進(jìn)程之間的管道。命令的標(biāo)準(zhǔn)輸入將會(huì)通過(guò)標(biāo)準(zhǔn)輸出傳進(jìn)來(lái)的,而進(jìn)度會(huì)被輸出到標(biāo)準(zhǔn)錯(cuò)誤輸出。”
上述解釋來(lái)自該命令的幫助頁(yè)。
下載和安裝
Debian 系的操作系統(tǒng),如 Ubuntu,可以簡(jiǎn)單的使用下面的命令安裝 PV:
sudo apt-get install pv
RedHat系的則這樣:
# yum install pv
如果你使用了其他發(fā)行版本,你可以使用各自的包管理軟件在你的系統(tǒng)上安裝 PV。一旦 PV 安裝好了你就可以在各種場(chǎng)合使用它(詳見(jiàn)下文)。需要注意的是下面所有例子都使用的是 pv 1.2.0。
特性和用法
我們(在 linux 上使用命令行的用戶(hù))的大多數(shù)使用場(chǎng)景都會(huì)用到的命令是從一個(gè) USB 驅(qū)動(dòng)器拷貝電影文件到你的電腦。如果你使用 cp 來(lái)完成上面的任務(wù),你會(huì)什么情況都不清楚,直到整個(gè)復(fù)制過(guò)程結(jié)束或者出錯(cuò)。
然而pv 命令在這種情景下很有幫助。比如:
pv /media/himanshu/1AC2-A8E3/fNf.mkv > ./Desktop/fnf.mkv
輸出如下:
所以,如你所見(jiàn),這個(gè)命令顯示了很多和操作有關(guān)的有用信息,包括已經(jīng)傳輸了的數(shù)據(jù)量,花費(fèi)的時(shí)間,傳輸速率,進(jìn)度條,進(jìn)度的百分比,以及剩余的時(shí)間。
pv 命令提供了多種顯示選項(xiàng)開(kāi)關(guān)。比如,你可以使用-p 來(lái)顯示百分比,-t 來(lái)顯示時(shí)間,-r 表示傳輸速率,-e 代表eta(LCTT 譯注:估計(jì)剩余的時(shí)間)。好事是你不必記住某一個(gè)選項(xiàng),因?yàn)槟J(rèn)這幾個(gè)選項(xiàng)都是啟用的。但是,如果你只要其中某一個(gè)信息,那么可以通過(guò)控制這幾個(gè)選項(xiàng)來(lái)完成任務(wù)。
這里還有一個(gè)-n 選項(xiàng)來(lái)允許 pv 命令顯示整數(shù)百分比,在標(biāo)準(zhǔn)錯(cuò)誤輸出上每行顯示一個(gè)數(shù)字,用來(lái)替代通常的可視進(jìn)度條。下面是一個(gè)例子:
pv -n /media/himanshu/1AC2-A8E3/fNf.mkv > ./Desktop/fnf.mkv
這個(gè)特殊的選項(xiàng)非常合適某些情境下的需求,如你想把用管道把輸出傳給dialog 命令。
接下來(lái)還有一個(gè)命令行選項(xiàng),-L 可以讓你修改 pv 命令的傳輸速率。舉個(gè)例子,使用 -L 選項(xiàng)來(lái)限制傳輸速率為2MB/s。
pv -L 2m /media/himanshu/1AC2-A8E3/fNf.mkv > ./Desktop/fnf.mkv
如上圖所見(jiàn),數(shù)據(jù)傳輸速度按照我們的要求被限制了。
另一個(gè)pv 可以幫上忙的情景是壓縮文件。這里有一個(gè)例子可以向你解釋如何與壓縮軟件Gzip 一起工作。
pv /media/himanshu/1AC2-A8E3/fnf.mkv | gzip > ./Desktop/fnf.log.gz
有時(shí)候我們?cè)陔娪捌聊簧峡吹揭恍┳帜灰粋€(gè)個(gè)勻速顯示出來(lái),像有人在邊敲鍵盤(pán),邊顯示一樣。Linux上的pv命令可以實(shí)現(xiàn)這種效果。
運(yùn)行如下命令:
$ echo "Tecmint[dot]com is a community of Linux Nerds and Geeks" | pv -qL 10
效果如下: