pv
顯示當前在命令行執行的命令的進度信息,管道查看器
補充說明
pv命令 Pipe Viewer 的簡稱,由Andrew Wood 開發。意思是通過管道顯示數據處理進度的信息。這些信息包括已經耗費的時間,完成的百分比(通過進度條顯示),當前的速度,全部傳輸的數據,以及估計剩餘的時間。
下載安裝
1# Debian 系的操作系統,如 Ubuntu
2sudo apt-get install pv
3
4# RedHat系的則這樣:
5yum install pv
語法
1pv(選項)(參數)
2pv [OPTION] [FILE]...
選項
1-p, --progress 顯示進度條
2-t, --timer 顯示已用時間
3-e, --eta 顯示預計到達時間 (完成)
4-I, --fineta 顯示絕對估計到達時間
5 (完成)
6-r, --rate 顯示數據傳輸速率計數器
7-a, --average-rate 顯示數據傳輸平均速率計數器
8-b, --bytes 顯示傳輸的字節數
9-T, --buffer-percent 顯示正在使用的傳輸緩衝區百分比
10-A, --last-written NUM 顯示上次寫入的字節數
11-F, --format FORMAT 將輸出格式設置爲FORMAT
12-n, --numeric 輸出百分比
13-q, --quiet 不輸出任何信息
14
15-W, --wait 在傳輸第一個字節之前不顯示任何內容
16-D, --delay-start SEC 在SEC秒過去之前不顯示任何內容
17-s, --size SIZE 將估算的數據大小設置爲SIZE字節
18-l, --line-mode 計算行數而不是字節數
19-0, --null 行以零結尾
20-i, --interval SEC 每SEC秒更新一次
21-w, --width WIDTH 假設終端的寬度爲WIDTH個字符
22-H, --height HEIGHT 假設終端高度爲HEIGHT行
23-N, --name NAME 在可視信息前面加上名稱
24-f, --force 將標準錯誤輸出到終端
25-c, --cursor 使用光標定位轉義序列
26
27-L, --rate-limit RATE 將傳輸限制爲每秒RATE字節
28-B, --buffer-size BYTES 使用BYTES的緩衝區大小
29-C, --no-splice 從不使用splice(),始終使用讀/寫
30-E, --skip-errors 跳過輸入中的讀取錯誤
31-S, --stop-at-size 傳輸--size字節後停止
32-R, --remote PID 更新過程PID的設置
33
34-P, --pidfile FILE 將進程ID保存在FILE中
35
36-d, --watchfd PID[:FD] 監視進程PID,打開的文件FD
37
38-h, --help 顯示幫助
39-V, --version 顯示版本信息
實例
我們(在 linux 上使用命令行的用戶)的大多數使用場景都會用到的命令是從一個 USB 驅動器拷貝電影文件到你的電腦。如果你使用 cp 來完成上面的任務,你會什麼情況都不清楚,直到整個複製過程結束或者出錯。
1# 複製文件會有進度
2linux [master●] % pv ~/Downloads/CentOS-7-x86_64-Minimal-1511.iso > ~/Desktop/CentOS-7-x86_64-Minimal-1511.iso
3# 下面輸入信息
4552MiB 0:00:02 [ 212MiB/s] [==================> ] 91% ETA 0:00:00
5
6# -L 可以讓你修改 pv 命令的傳輸速率。
7# 使用 -L 選項來限制傳輸速率爲2MB/s。
8pv -L 2m /media/himanshu/1AC2-A8E3/fNf.mkv > ./Desktop/fnf.mkv
複製文件時顯示進度條(如果沒有指定選項,默認使用 -p, -t, -e, -r 和 -b 選項)
1$ pv getiot.db > getiot.db.bak
將 /var/log/syslog
文件打包成 zip 壓縮包,並顯示進度
1$ pv /var/log/syslog | zip > syslog.zip
使用 tar 命令解壓縮時顯示進度條
1$ pv rootfs.tar.bz2 | tar -jxf - -C rootfs/
212.3MiB 0:00:02 [6.15MiB/s] [=========> ] 21% ETA 0:00:07
解壓完成
1$ pv rootfs.tar.bz2 | tar -jxf - -C rootfs/
257.8MiB 0:00:10 [5.53MiB/s] [==============================================>] 100%
字符一個個勻速在命令行中顯示出來
1echo "Tecmint[dot]com is a community of Linux Nerds and Geeks" | pv -qL 10
壓縮文件展示進度信息
1pv /media/himanshu/1AC2-A8E3/fnf.mkv | gzip > ./Desktop/fnf.log.gz
用 dd 命令將 iso 寫入磁盤,pv來實現進度條的顯示
1sudo pv -cN source < /Users/kacperwang/Downloads/CentOS-7-x86_64-Everything-1511.iso | sudo dd of=/dev/disk2 bs=4m
2## 顯示下面進度
3source: 5.2GiB 5:11:41 [ 503KiB/s] [=====================> ] 71% ETA 2:01:56
在linux上, 如果執行的一些命令或者一些腳本需要花費很長時間, 但又不能拿出更多的精力反覆盯着有沒有執行結束, 這時候可以用pv監聽PID, 任務完成後通過網絡通知到微信或者釘釘, 這樣就可以騰出來精力做其他的事, 是不是很棒
1$ pv -d $(ps -ef | grep -v grep | grep "<腳本或命令的關鍵字>" | awk '{print $2}') && <這裏執行發通知腳本或者命令,腳本或命令需要提前調試好>
注意
- 選項"-d, --watchfd PID[:FD]", 是在1.6.6版本中才有的參數,如果使用需要
pv
升級到大於等於1.6.6的版本 - CentOS7的Yum倉庫裏
pv
最新的是1.4.6版本,1.6.6版本是發佈在CentOS8裏面的,如果需要,可以將CentOS8裏的pv下載到本地電腦上或者本地的Yum私服裏, 這個是下載地址, 可以根據自己不同的架構下載, 1.6.6的安裝:rpm -ivh pv-1.6.6-7.el8.x86_64.rpm -U
來源:https://github.com/jaywcjlove/linux-command
最後修改於: Wednesday, January 31, 2024
版權申明:
- 未標註來源的內容皆為原創,未經授權請勿轉載(因轉載後排版往往錯亂、內容不可控、無法持續更新等);
- 非營利為目的,演繹本博客任何內容,請以'原文出處'或者'參考鏈接'等方式給出本站相關網頁地址(方便讀者)。