ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Linux Command 手册深度解读:pv 命令(Pipe Viewer)管道进度查看器实战指南

Linux Command 手册深度解读:pv 命令(Pipe Viewer)管道进度查看器实战指南 文档教程【免费下载链接】linux-commandLinux命令大全搜索工具内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux项目地址https://gitcode.com/GitHub_Trending/linux/linux-command点击查看免费下载pvPipe Viewer是 Linux 命令行中为长耗时管道任务提供进度可视化的经典工具本文以 linux-command 仓库中的 command/pv.md 为蓝本系统讲解其原理、安装方式、全部选项及 8 类高频实战场景文件复制、压缩打包、dd 写盘、限速、进程监听等。读完本文你将能够在任何看不见进度的管道命令中轻松获得已用时间、百分比进度条、当前速率、总字节数与剩余时间等完整反馈。pv 是什么让盲等变成可见pv是Pipe Viewer的简称由 Andrew Wood 开发。它通过管道pipe中转数据流并在终端上实时显示数据处理进度信息这些信息包括已经耗费的时间elapsed time完成的百分比通过进度条显示当前的数据传输速度全部传输的数据量估计的剩余时间ETA在日常使用中我们经常会遇到命令执行很久却毫无反馈的场景例如用cp拷贝大文件时在复制结束或报错之前完全不清楚进展。将pv插入管道中间就能把这些盲等变成可见的进度条是排查长任务、监控数据流的利器。在 linux-command 仓库中pv的手册作为独立文档存放于 command/pv.md与该仓库收录的 600 多个 Linux 命令文档一起构成完整的命令速查体系。安装 pv覆盖 Debian 系与 RedHat 系pv已进入主流发行版的软件仓库直接通过包管理器安装即可# Debian 系的操作系统如 Ubuntu sudo apt-get install pv # RedHat 系的则这样 yum install pv版本注意下文实战部分会用到-d, --watchfd PID[:FD]选项该参数在 pv 1.6.6 版本中才引入使用时需要保证 pv 版本大于等于 1.6.6。CentOS 7 的 Yum 仓库中 pv 最新版本是 1.4.6而 1.6.6 版本发布在 CentOS 8 中如需在 CentOS 7 上使用该能力可以通过 RPM 软件包检索站点根据自身 CPU 架构下载对应的pv-1.6.6-7.el8.x86_64.rpm安装包然后本地安装rpm -ivh pv-1.6.6-7.el8.x86_64.rpm -U语法与选项全解pv的基本语法为pv(选项)(参数) pv [OPTION] [FILE]...其中FILE为可选输入文件不指定时默认从标准输入读取数据。下面按功能分组整理全部选项显示内容控制选项说明-p, --progress显示进度条-t, --timer显示已用时间-e, --eta显示预计到达时间完成-I, --fineta显示绝对估计到达时间完成-r, --rate显示数据传输速率计数器-a, --average-rate显示数据传输平均速率计数器-b, --bytes显示传输的字节数-T, --buffer-percent显示正在使用的传输缓冲区百分比-A, --last-written NUM显示上次写入的字节数-F, --format FORMAT将输出格式设置为 FORMAT-n, --numeric输出百分比适合脚本解析-q, --quiet不输出任何信息等待与计时选项说明-W, --wait在传输第一个字节之前不显示任何内容-D, --delay-start SEC在 SEC 秒过去之前不显示任何内容-s, --size SIZE将估算的数据大小设置为 SIZE 字节用于无法自动获知总大小、但仍需显示百分比的情形-l, --line-mode计算行数而不是字节数-0, --null行以零结尾-i, --interval SEC每 SEC 秒更新一次-w, --width WIDTH假设终端的宽度为 WIDTH 个字符-H, --height HEIGHT假设终端高度为 HEIGHT 行-N, --name NAME在可视信息前面加上名称多管道并行时用于区分-f, --force将标准错误输出到终端-c, --cursor使用光标定位转义序列传输控制选项说明-L, --rate-limit RATE将传输限制为每秒 RATE 字节-B, --buffer-size BYTES使用 BYTES 的缓冲区大小-C, --no-splice从不使用 splice()始终使用读/写-E, --skip-errors跳过输入中的读取错误-S, --stop-at-size传输 --size 字节后停止-R, --remote PID更新进程 PID 的设置进程监控与辅助选项说明-P, --pidfile FILE将进程 ID 保存在 FILE 中-d, --watchfd PID[:FD]监视进程 PID打开的文件 FD-h, --help显示帮助-V, --version显示版本信息默认行为如果未指定任何选项pv默认启用-p, -t, -e, -r, -b进度条、已用时间、预计完成时间、当前速率、字节数这五个输出要素。实战场景一复制大文件并显示进度最常见的场景是从 U 盘或远程目录拷贝大文件。相比直接使用cp的全程无反馈用pv重定向输出即可看到完整进度# 复制文件会有进度 linux [master●] % pv ~/Downloads/CentOS-7-x86_64-Minimal-1511.iso ~/Desktop/CentOS-7-x86_64-Minimal-1511.iso # 下面输入信息 552MiB 0:00:02 [ 212MiB/s] [ ] 91% ETA 0:00:00对上面这行输出做一次解码即可掌握pv的输出格式552MiB已传输 552MiB 数据对应-b0:00:02已用时间 2 秒对应-t[ 212MiB/s]当前速率约 212MiB/s对应-r[ ]进度条表示当前写入位置91%完成百分比ETA 0:00:00预计剩余 0 秒即可完成对应-e。如果需要控制拷贝占用的带宽可用-L限制传输速率。pv的速率后缀区分大小写小写k/m/g表示 2 的幂如2m约等于 2MiB/s大写K/M/G表示 10 的幂。将拷贝限速到 2MiB/spv -L 2m /media/himanshu/1AC2-A8E3/fNf.mkv ./Desktop/fnf.mkv复制数据库备份文件时不指定任何选项默认使用-p, -t, -e, -r, -b即可获得进度条$ pv getiot.db getiot.db.bak实战场景二压缩打包过程中的进度反馈pv的典型用法是插在管道中间让后续命令处理的数据量实时可见。将/var/log/syslog打包成 zip 压缩包并显示进度$ pv /var/log/syslog | zip syslog.zip使用 tar 解压缩时显示进度条-jxf -从标准输入读取 bzip2 格式的压缩包-C指定解压目录$ pv rootfs.tar.bz2 | tar -jxf - -C rootfs/ 12.3MiB 0:00:02 [6.15MiB/s] [ ] 21% ETA 0:00:07解压完成时的输出进度条走到 100%$ pv rootfs.tar.bz2 | tar -jxf - -C rootfs/ 57.8MiB 0:00:10 [5.53MiB/s] [] 100%对视频文件做 gzip 压缩时展示进度信息pv /media/himanshu/1AC2-A8E3/fnf.mkv | gzip ./Desktop/fnf.log.gz这里管道右侧的zip、tar、gzip在 linux-command 仓库中均有对应手册command/zip.md、command/tar.md、command/gzip.md可交叉查阅完整参数。实战场景三用 pv 做打字机演示效果组合-q不输出任何进度信息与-L限速可以控制数据流按指定速率输出实现字符逐字匀速显示的演示效果echo Tecmint[dot]com is a community of Linux Nerds and Geeks | pv -qL 10其中-q关闭了进度信息的输出-L 10将传输速率限制为每秒 10 字节于是管道中的数据会以接近逐字符的节奏流出。echo的完整用法可参考 command/echo.md。实战场景四dd 写盘时获得进度条使用dd将 ISO 镜像写入磁盘/ U 盘时经典痛点是长时间无反馈。用pv提供输入数据即可获得进度显示sudo pv -cN source /Users/kacperwang/Downloads/CentOS-7-x86_64-Everything-1511.iso | sudo dd of/dev/disk2 bs4m ## 显示下面进度 source: 5.2GiB 5:11:41 [ 503KiB/s] [ ] 71% ETA 2:01:56这里-c启用光标定位转义序列与dd的实时刷新配合-N source为本次管道加上名称标签因此输出行首会出现source:前缀。需要说明的是示例中的/Users/kacperwang/Downloads/...与/dev/disk2来自原文档演示环境macOS在 Linux 上请将输出设备替换为实际的块设备如/dev/sdX写入前务必确认设备名以免误写。dd的完整参数见 command/dd.md。实战场景五监听长任务进程完成后自动通知在 Linux 上如果某些命令或脚本需要运行很长时间又不想反复盯着屏幕等待结束可以利用pv -d监听目标进程待任务完成后通过网络通知到微信或钉钉从而把精力腾出来做其他事情$ pv -d $(ps -ef | grep -v grep | grep 脚本或命令的关键字 | awk {print $2}) 这里执行发通知脚本或者命令,脚本或命令需要提前调试好这条命令的调用链拆解如下ps -ef | grep -v grep | grep 脚本或命令的关键字找出正在运行的长任务进程先排除 grep 自身再按关键字过滤command/ps.md 中有完整说明awk {print $2}提取第二列进程 PIDcommand/awk.md 可查其语法pv -d PID挂载到该进程监视其打开的文件描述符 FD实时输出进度-d的完整形式是-d PID[:FD]可进一步限定监听的文件描述符当pv退出即被监听任务结束后利用短路逻辑触发右侧的通知脚本将任务完成消息推送到微信、钉钉等 IM 工具。由于-d/--watchfd是 1.6.6 版本才引入的选项使用该场景前请先确认版本pv -V并按上文安装 pv一节的说明在老旧发行版上升级。结合本项目查阅与引用 pv 手册在 linux-command 仓库中本篇文章的核心依据 command/pv.md 与其余命令文档遵循统一的 Markdown 结构先给出命令名与一句话定位再补充说明、下载安装、语法、选项、实例与注意事项。整个仓库按此规范收录了 600 多个 Linux 命令见 README.md 的项目说明构建时通过 package.json 中的npm run build执行node scripts/build.mjs将 command 目录下的 Markdown 文档统一处理再由 template/details.ejs 中的%-mdhtml%渲染为 Web 页面正文配合 scripts/sitemap.js 生成站点地图便于搜索引擎收录检索。读者可以随时打开 command/pv.md 原始文档核对本文引用的全部选项与示例或查阅与其联动的 command/tar.md、command/dd.md、command/gzip.md、command/zip.md 等命令手册构建完整的管道工具箱。注意事项小结-d, --watchfd PID[:FD]是 pv 1.6.6 版本才有的参数使用前需将 pv 升级到大于等于 1.6.6CentOS 7 的 Yum 仓库中 pv 最新版本为 1.4.61.6.6 版本发布在 CentOS 8 中如需在 CentOS 7 使用可从 RPM 软件包检索站点按自身架构下载pv-1.6.6-7.el8.x86_64.rpm执行rpm -ivh pv-1.6.6-7.el8.x86_64.rpm -U完成安装未指定选项时pv默认启用-p, -t, -e, -r, -b五项输出在脚本中需要机器可读的输出时优先使用-n纯百分比或-q静默对无法自动获知数据总大小的管道可配合-s SIZE设置估算大小以正常显示百分比与 ETA。赞分享文档教程【免费下载链接】linux-commandLinux命令大全搜索工具内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux项目地址https://gitcode.com/GitHub_Trending/linux/linux-command点击查看免费下载相关推荐ps 命令详解Linux 进程状态查看、字段解读与高效组合实战linux-command 命令手册精讲ps 命令详解Linux 进程状态查看、字段解读与高效组合实战linux command 命令手册精讲 ps 是 Linux 系统管理中最基础也最强大的进文档教程Linux ip 命令实战指南用 iproute2 统一管理网络接口、地址与路由linux-command 手册深度解读Linux ip 命令实战指南用 iproute2 统一管理网络接口、地址与路由linux command 手册深度解读 ip 是 iproute2 工具文档教程linux-command 手册深度解读tftp 命令与嵌入式 Linux TFTP 服务器完整配置指南linux command 手册深度解读tftp 命令与嵌入式 Linux TFTP 服务器完整配置指南 TFTPTrivial File Transfer文档教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表