1. 程式人生 > >命令列終端下的處理進度提示工具 pv

命令列終端下的處理進度提示工具 pv

起因

最近在做一個開發板的系統啟動卡的製作工具,純 shell 實現。在實際使用的時候部分 SD 卡或讀卡器的問題,導致整個做卡過程十分耗時,讓執行製作的人很焦慮。於是開始考慮給這個做卡工具新增進度提示。

一開始是想著先使用 dd 之類的工具給這個 SD 卡做個測試,看看其資料寫入速率如何。再根據這個速率計算還需要的剩餘時間。結果測試出來的速率值很不靠譜,根本無法使用。再說,tar 解壓檔案系統到 SD 卡,需要操作大量的檔案,其實也不適合用一個單純的 dd 寫入速率來衡量。

實現

放狗搜尋發現有個工具叫 pv,挺有意思的。摸索一番,找到了滿足需求的用法。

pv rootfs_v2.5.tar.bz2 | sudo tar jx -C fs

效果如下:

 

pv 工具的基本思想是先把資料經過它,然後再通過管道傳遞給真正需要處理資料的程式,這樣,它就能夠統計相關資訊並進行顯示了。

其他

在我的做卡工具中還需要複製大量檔案,這個也有顯示處理進度的需求。試了下 scp、rsync 等方法,但效果不太理想。後來乾脆就繼續使用上述 pv + tar 的方法來做這部分的工作了。

下面參考連結裡有個挺有趣的東西,使用 pv 來控制終端字元的列印速度。方便的話建議執行一下以下命令看看,效果看起來很 Geek,有趣!

echo "Tecmint[dot]com is a community of Linux Nerds and Geeks" | pv -qL 10

參考

廖傑良 - 2018-11-8