侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux pv命令教程:掌握数据流可视化(附实例详解和注意事项)

在Linux环境中,将数据从一个地方传输到另一个地方是常见的操作。pv 命令(Pipe Viewer)是一个用于监视数据通过管道传输过程的工具,它可以提供即时的数据传输速率、已传输数据量以及估算的完成时间等信息。这个命令对于那些想要了解数据传输进度的用户非常有用。

Linux pv命令介绍

pv(Pipe Viewer)是一个终端应用程序,能够以可视化的方式展示管道中的数据传输过程。它可以显示进度条、数据传输速率、已传输的数据量和剩余时间估计等信息。这对于调试和监视长时间运行的数据传输任务特别有帮助。pv能够插入到管道命令序列中,无需对其他命令做任何改变。

Linux pv命令适用的Linux版本

pv命令在大多数Linux发行版中都可以使用,但在某些系统中可能不是预安装的。以下是在不同发行版中安装pv的命令:

  • 对于基于Debian的系统(比如Ubuntu),使用以下命令安装:

    [linux@bashcommandnotfound.cn ~]$ sudo apt-get install pv
    ```
    
    
  • 对于基于RPM的系统(比如CentOS),在CentOS 7中使用以下命令安装:

    [linux@bashcommandnotfound.cn ~]$ sudo yum install pv
    ```
    
    而在CentOS 8中,则需要使用以下命令:
    
    ````bash
    [linux@bashcommandnotfound.cn ~]$ sudo dnf install pv
    ```
    

如果命令提示bash: pv: command not found,请根据上述步骤进行安装。

Linux pv命令的基本语法

语法格式如下:

pv [选项] [文件...]

Linux pv命令的常用选项或参数说明

选项描述
-a显示平均速率
-b显示已传输的字节数
-c在多个pv命令间保持光标位置一致
-e显示估计的完成时间
-l计数行而不是字节
-n输出百分比
-p显示进度条
-r显示速率
-s设置预期的数据总量
-t显示经过的时间
-w设置进度条的宽度
-h显示帮助信息

注:若选项超过20个,只挑选了最常用的部分。

Linux pv命令实例详解

实例1:显示复制过程的进度

复制文件时,我们通常不知道需要多长时间。使用pv结合dd命令可以可视化复制过程。

[linux@bashcommandnotfound.cn ~]$ pv source.iso | dd of=/dev/sdx bs=128M

实例2:估计压缩文件的时间

在压缩大文件时,使用pv可以显示进度和估算剩余时间。

[linux@bashcommandnotfound.cn ~]$ pv largefile.tar.gz | gzip > largefile.tar.gz.gzip

实例3:监视数据库备份的进度

导出大型数据库可能需要一些时间,使用pv可以看到当前的进度。

[linux@bashcommandnotfound.cn ~]$ mysqldump database | pv -cN | gzip > database.sql.gz

实例4:通过网络传输文件并查看进度### 实例4:通过网络传输文件并查看进度

在通过网络传输文件时,pv可以帮助我们监视正在传输的数据量以及速率。

[linux@bashcommandnotfound.cn ~]$ pv largefile.iso | ssh user@remotehost "cat > /path/to/remote/largefile.iso"

实例5:结合tar命令备份目录

备份一个目录时,可以使用pv来查看数据流的过程。

[linux@bashcommandnotfound.cn ~]$ tar cf - /path/to/directory | pv -cN tar | gzip > directory_backup.tar.gz

实例6:结合split命令分割大文件

当分割大文件为多个小文件时,pv可以帮助我们监视进度:

[linux@bashcommandnotfound.cn ~]$ pv largefile.iso | split -b 100M - largefile_part_

上述命令会将largefile.iso分割成多个100MB大小的文件,如largefile_part_aa, largefile_part_ab, 等,并显示进度。

实例7:结合catssh进行远程备份

备份本地文件到远程服务器时,pv可以显示传输的进度:

[linux@bashcommandnotfound.cn ~]$ cat backup.tar | pv | ssh user@remotehost "cat > /path/to/remote/backup.tar"

实例8:结合netcat进行网络文件传输

在使用netcat进行文件传输时,可以用pv来监控传输状态:

# 在接收端执行
[linux@bashcommandnotfound.cn ~]$ nc -l 1234 | pv > received_file.iso

# 在发送端执行
[linux@bashcommandnotfound.cn ~]$ pv largefile.iso | nc remotehost 1234

实例9:监控解压进度

解压缩大型压缩文件时,pv可以提供解压进度:

[linux@bashcommandnotfound.cn ~]$ pv largefile.tar.gz | tar xzf -

实例10:使用pv监控磁盘写入

当用dd写入磁盘映像时,pv可以显示写入进度和速率:

[linux@bashcommandnotfound.cn ~]$ pv disk_image.iso | dd of=/dev/sdX bs=4M

实例11:结合cp命令复制文件

虽然pv常用于管道,但也可以结合cp命令用来复制文件:

[linux@bashcommandnotfound.cn ~]$ pv -cN source < /path/to/sourcefile > /path/to/destinationfile

实例12:结合rsync进行同步

使用rsync同步文件夹时,pv可以提供传输进度:

[linux@bashcommandnotfound.cn ~]$ rsync -av --progress source/ | pv -lep -s $(du -sb source/ | awk '{print $1}') > destination/

实例13:检查文件是否完整

在比较文件完整性时,pv可以用来显示进度:

[linux@bashcommandnotfound.cn ~]$ diff <(pv file1.iso) <(pv file2.iso)

实例14:结合md5sum计算大文件的MD5

计算大文件的MD5值时,pv可以显示处理进度:

[linux@bashcommandnotfound.cn ~]$ pv largefile.iso | md5sum

实例15:使用pv复制一个文件夹到另一个位置

以下命令将文件夹复制到另一个位置,并显示进度信息:

[linux@bashcommandnotfound.cn ~]$ tar cf - /path/to/source_dir | pv -s $(du -sb /path/to/source_dir | awk '{print $1}') | tar xf - -C /path/to/destination_dir

常见技巧或高级技巧

限制传输速率

如果要限制传输速率,pv提供了一个选项-L,可以指定速率限制:

[linux@bashcommandnotfound.cn ~]$ pv -L 1m largefile.iso > /dev/null

这个命令将largefile.iso文件的输出速率限制在每秒1MB。

监视多个文件传输

可以使用pv监视多个文件传输的总进度:

[linux@bashcommandnotfound.cn ~]$ cat file1.iso file2.iso | pv -s $(($(stat --printf="%s" file1.iso) + $(stat --printf="%s" file2.iso))) > /dev/null

这将显示两个文件传输的总体进度。

Linux pv命令的注意事项

  • 当使用pv监视数据传输时,确保你有正确估计或知道数据的总量,特别是在使用-s选项时。
  • pv不会改变数据传输的方式或数据本身,它只是提供了一个观察和监控的窗口。
  • 如果系统中没有pv命令,可能会遇到bash: pv: command not found错误,按照上面的安装指南进行安装即可。
0

评论区