linux命令PV介紹

本次演示環境採用rpm安裝方式
rpm包下載安裝
http://www.ivarch.com/programs/pv.shtmlhtml

簡單使用介紹:mysql

複製文件限制到每秒1M到另外的目錄下git

pv -L 1m 11.sql > /tmp/12.sql

複製文件夾到另一個文件夾下面:sql

把test01的文件夾複製到txt01文件夾下,限制每秒傳輸2M/s

 tar cf - "test01/" | pv -L 2m -s $(du -sb "test01/" | cut -f1) | tar xf - -C "txt01"

 [root@localhost tmp]# tar cf - "test01/" | pv -L 2m -s $(du -sb "test01/" | cut -f1) | tar xf - -C "txt01"
 233MiB 0:01:56 [2.00MiB/s] [===============================================================================================================================================>] 100%            
[root@localhost tmp]# ll test01/
總用量 239552
-rw-r--r--. 1 root root 245300506 9月  18 21:54 12.sql
-rw-------. 1 root root         0 9月  18 21:53 yum.log
[root@localhost tmp]# ll txt01/
總用量 0
drwxr-xr-x. 2 root root 35 9月  18 21:59 test01
[root@localhost tmp]# ll txt01/test01/
總用量 239552
-rw-r--r--. 1 root root 245300506 9月  18 21:54 12.sql
-rw-------. 1 root root         0 9月  18 21:53 yum.log

pv命令能夠限制硬盤的io速度
pv命令限制文件的寫入磁盤速率在每秒2M之內爲例數據庫

[root@localhost tmp]# tar zcf - txt01 |pv -L 2m >/tmp/txt01.tar.gz 
29.1MiB 0:00:14 [2.00MiB/s] [   <=>    ]
[root@localhost tmp]#

pv顯示進度壓縮文件:服務器

[root@localhost test01]# pv 12.sql | gzip > 12.sql.gz
 233MiB 0:00:09 [24.5MiB/s] [===============================================================================================================================================>] 100%            
[root@localhost test01]#

遠程壓縮備份而後拉取到本地服務器ssh

2臺內網機器
192.168.1.217
192.168.1.220
提早2臺機器之間實現相互免祕鑰
從192.168.1.220機器本地要遠程登陸192.168.1.217機器執行tar zcf 壓縮打包/tmp/12.sql 文件而後傳輸到192.168.1.220機器本地ide

ssh -p5110 192.168.1.217 tar zcf - /tmp/12.sql | pv --wait --bytes --rate-limit 80M > projectx.tar.gz

必須使用--name命名pv的每一個實例,而且必須使用--cursor啓用多行模式。 這兩個選項結合在一塊兒,建立了一系列帶標籤的指標,每一個命名實例一個指標。fetch

ssh -p5110 192.168.1.217 tar cf - /tmp/12.sql | pv --wait --name ssh | gzip | pv --wait --name gzip > projectx.tgz

[root@localhost test01]# ssh -p52110 192.168.1.217 tar cf - /tmp/12.sql | pv --wait --name ssh | gzip | pv --wait --name gzip > projectx.tgz
tar: 從成員名中刪除開頭的「/」
      ssh:  233MiB 0:00:09 [24.4MiB/s] [          <=>             ]
     gzip: 29.1MiB 0:00:09 [3.04MiB/s] [          <=>             ]
[root@localhost test01]# 

分析:第一行標記爲ssh,顯示了傳輸進度。 第二行標記爲gzip,顯示壓縮的進度。 因爲每一個命令沒法肯定其各自操做中的字節數,所以累積的總數和活動條顯示在每一行上。

繁忙的數據庫上導入數據時如何最小化對線上庫的影響:ui

若是當前線上的數據庫處於繁忙的狀態,能夠採用下面的命令指定特定的SQL數據導入到指定的庫,來減輕對當前線上庫的壓力

[root@mysql02 ~]# pv -p -a -L2m 2020-09-14.hlz_ad.sql|mysql test01 
[1.99MiB/s] [===========================================================================================================================================================================>] 100%
[root@mysql02 ~]# 

參數介紹: 
-p顯示進度
-a顯示平均速度
-L限制爲2M

能夠看到 CPU 已經很是冷靜,而且緩慢的處理數據
[root@localhost ~]# find / -type f -name '*.c' -exec grep --files-with-match fopen \{\} \;|pv --line-mode
/usr/share/doc/libpng-1.5.13/example.c
/usr/share/doc/git-1.8.3.1/contrib/examples/builtin-fetch--tool.c
2.00  0:00:00 [2.80 /s] [   <=>
相關文章
相關標籤/搜索