如何监控 Linux 命令的进度(使用 pv 和 progress)

在 Linux 環境中,當我們執行一些耗時較長的指令時,常常只能面對閃爍的光標,難以掌握指令執行的進度。這就如同乘坐長途飛機,卻沒有螢幕顯示飛行資訊一樣,令人感到焦慮和迷茫。幸好,我們可以借助 pvprogress 這兩個實用工具,為我們的指令添加進度條,提供即時的回饋,讓我們不再盲目等待。

pvprogress 命令就像為我們的 Linux 旅程裝上了儀表板,不僅能顯示進度條,還能提供預計完成時間(ETA)等有用的統計信息。有了它們,我們可以更清楚地了解指令的執行情況,更好地管理時間和資源。

安裝 pv 命令

要開始使用 pv 命令,首先需要安裝它。以下是在不同 Linux 發行版上的安裝方法:

Ubuntu:

sudo apt-get install pv

Fedora:

sudo dnf install pv

Manjaro:

sudo pacman -Syu pv

pv 的基本用法

pv 代表 “pipe viewer”,它的核心功能是監控通過管道傳輸的數據。以下是一些常見的 pv 用法示例:

使用 pv 壓縮檔案:

假設我們想將一個 ISO 映像檔壓縮成 ZIP 檔,並透過 pv 觀察壓縮進度:

pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso | zip > gparted.zip

使用 pv 複製多個檔案和資料夾:

要複製多個檔案或資料夾,我們可以搭配 tar 命令:

tar -c help-files/ | pv | tar -x -C Documents/

在這個例子中,tar 命令先將 help-files/ 目錄中的內容打包,然後透過 pv 傳輸,最後解壓縮到 Documents/ 目錄。 pv 會顯示傳輸的進度,但由於 tar 的特性,進度條可能會顯示為一個移動的指示器,而不是傳統的進度條。

使用 pvtar 建立壓縮檔:

如果我們想要建立一個壓縮檔案,同時透過 pv 監控進度,可以使用以下命令:

tar -czf - ./help-files/ | pv > help-files.tgz

這個命令會計算 help-files 目錄中所有 .page 檔案的行數、字元數和單字數。 pv 會顯示處理進度,而 wc 會在處理完成後顯示統計結果。

安裝 progress 命令

progress 命令與 pv 類似,可以監控特定 Linux 命令的進度。以下是在不同 Linux 發行版上的安裝方法:

Ubuntu:

sudo apt-get install progress

Fedora:

sudo dnf install progress

Manjaro:

sudo pacman -Syu progress

progress 支援的命令

輸入 progress 並按下 Enter,即可查看 progress 支援監控的命令列表:

progress

progress 的使用方法

progress 可以通過管道或持續監控模式來監控命令的執行。

透過管道監控進度:

以下是一個使用 tar 命令壓縮檔案並透過 progress 監控進度的例子:

tar -czf help.tgz ./help-files/ | progress -m

在這個例子中,progress -m 會持續監控 tar 命令的執行,直到完成。progress 會顯示每個檔案的處理進度,包含:

  • 程序 ID
  • 程序名稱
  • 完成百分比
  • 已處理的資料和總檔案大小
  • 資料傳輸速率
  • 預計剩餘時間 (ETA)

持續監控模式:

使用 progress -M 命令可以進入持續監控模式:

progress -M

在這個模式下,progress 會持續等待可以監控的命令開始執行,一旦有符合條件的命令執行,progress 就會自動顯示其進度。

例如,在另一個終端視窗執行 cat words.page 命令,progress 就會自動監控並顯示其執行進度。

cat words.page

當 cat 完成列出檔案內容時, progress 也會恢復到等待狀態。

總結

透過 pvprogress 命令,我們可以擺脫盲目等待,更清楚地掌握 Linux 指令的執行進度。這兩個實用工具可以幫助我們更有效率地管理時間和資源,使 Linux 的使用體驗更加舒適和便捷。