歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 對話 UNIX: 探察管道

對話 UNIX: 探察管道

日期:2017/2/28 16:40:55   编辑:Linux教程
管道操作符把一個 UNIX? 命令連接到另一個命令,從而在命令行上創建專門的程序。但是,管道像是黑箱子,用戶看不到從一個命令傳遞到下一個命令的數據。Pipe Viewer 可以探察管道。本文介紹如何在日常任務中使用它。

UNIX 中最巧妙最強大的功能之一是 shell。shell 比 GUI 高效得多,還可以通過編寫腳本自動執行許多任務。更好的是,管道操作符可以在命令行上組裝出專門的程序。管道按次序把命令連接起來,前一個命令的輸出作為後一個命令的輸入。

常用縮寫詞
  • GUI:Graphical user interface

但是,管道有一個大缺點:它像是黑箱子。如果把命令連接在一起,那麼只有序列中最後一個命令生成的輸出能夠反映管道的進度。當然,可以在序列中插入 tee,還可以用 tail 查看輸出文件的增長,但是這些解決方案都不完善,會把多個階段的標准輸出 (stdout) 和標准錯誤 (stderr) 混在一起。另外,這兩個解決方案比較粗糙,很可能無法表明每個步驟所需的計算量。

當然,可以把復雜的序列分解為多個單獨的步驟,每個步驟有自己的中間輸出文件。的確,如果希望檢查每個步驟的結果,分解是最理想的方法。編寫一個腳本,為每個步驟生成一個數據文件,在每對步驟之間使用數據文件作為輸入,以最後的文件作為最終結果。但是,這種做法浪費了命令行的靈活性。

我們需要的是一個可以嵌入命令行中的進度度量工具。理想情況下,可以對每個步驟重復使用這個工具,它應該是開放源碼的,可以移植到 Linux? 和 Mac OS X 等多種 UNIX 變體上。

好了,不必再盼望了:Pipe Viewer (pv) 就是這樣的工具。它由系統管理員 Andrew Wood 編寫,經過其他許多開發人員改進,前後歷時四年。它提供了探察命令行管道的能力。它的 項目頁面 上說,pv “可以插入管道中兩個進程之間,從而顯示傳遞數據的速度、已經花費的時間以及剩余時間。” 更引人注目的是,可以在同一個命令行中插入多個 pv 實例以顯示相對吞吐量。

本文介紹如何在 UNIX 系統上構建 pv,以及如何在簡單和復雜的命令行組合中應用它。但是,我們首先回顧一下管道連接進程的方式。

Copyright © Linux教程網 All Rights Reserved