什么是 pv
?
pv
(Pipe Viewer) 是一个 Linux/Unix 下的命令行工具,用于监控通过管道(pipe)传输的数据流。它可以显示数据传输的进度、速度、已传输数据量和预计剩余时间等信息。pv
常用于需要监控大数据量传输的场景,例如文件复制、备份、压缩或导出操作(如 docker export
)。
主要功能
- 进度条:显示数据传输的进度(百分比或已传输字节)。
- 传输速度:实时显示数据传输速率(如 MB/s)。
- 预计时间:估算传输完成所需的时间。
- 数据量统计:显示已传输的总数据量。
- 可配置性:支持自定义显示格式、单位等。
示例输出
运行以下命令:
docker export 681d6e7e5faf | pv > /mnt/guo/image/vllm_docker_image.tar
可能的输出类似:
1.23GiB 0:01:45 [11.7MiB/s] [=========> ] 65% ETA 0:00:58
- 1.23 GiB:已传输的数据量。
- 0:01:45:已用时间。
- [11.7 MiB/s]:当前传输速度。
- [=========> ] 65%:进度条和百分比。
- ETA 0:00:58:预计剩余时间。
安装 pv
- Ubuntu/Debian:
sudo apt-get update sudo apt-get install pv
- CentOS/RHEL:
sudo yum install pv
- MacOS(使用 Homebrew):
brew install pv
常见用法
-
监控管道传输:
cat large_file.tar | pv | tar -x
显示解压 tar 文件的进度。
-
指定文件大小(如果已知):
如果知道数据大小,可以用-s
参数提高进度准确性:docker export 681d6e7e5faf | pv -s 2G > /mnt/guo/image/vllm_docker_image.tar
其中
-s 2G
表示预计数据大小为 2 GB。 -
与其他工具结合:
常与tar
、gzip
、dd
或docker export
等命令配合使用。
为什么适合您的场景?
在您之前的提问中,docker export
不显示进度,而导出容器可能涉及大文件(GB 级别)。pv
可以插入到管道中,实时监控 docker export
的输出流,帮助您了解导出进度和剩余时间。
注意事项
- 权限:结合您之前的权限问题(
-bash: /mnt/guo/image/vllm_docker_image.tar: Permission denied
),确保目标目录/mnt/guo/image
对用户pcljgy
可写,或使用sudo bash -c
:sudo bash -c "docker export 681d6e7e5faf | pv > /mnt/guo/image/vllm_docker_image.tar"
- 大小未知:
pv
默认需要估算数据大小。如果大小未知,进度条可能不准确,但仍会显示传输速度和数据量。 - 性能开销:
pv
的开销极低,对docker export
的性能影响可忽略。
推荐
如果您希望监控 docker export
的进度,安装 pv
并使用以下命令:
sudo apt-get install pv # 或 sudo yum install pv
sudo bash -c "docker export 681d6e7e5faf | pv > /mnt/guo/image/vllm_docker_image.tar"
如果您知道容器大小(通过 docker inspect 681d6e7e5faf | grep Size
),可以用 -s
参数提高进度准确性。
如果有其他问题或需要进一步解释,请告诉我!