You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查看在子shell中运行的pv命令的输出?

如何查看在子shell中运行的pv命令的输出?

这个问题我之前也碰到过,核心是子shell里的pv输出被mksquashfs的执行环境给“藏”起来了,咱们可以通过显式重定向pv的输出来解决:

方法一:直接让pv输出到终端

修改你原来的mksquashfs命令,把pv的错误输出(pv默认把进度信息输出到stderr)直接重定向到当前终端设备/dev/tty,这样就能绕过子shell的输出限制,直接看到进度了:

mksquashfs empty-dir squash.img -p 'sda_backup.img f 444 root root dd if=/dev/sda bs=4M | pv 2>/dev/tty'

方法二:让pv显示精确进度百分比

如果想让pv显示更准确的进度(比如百分比),可以先获取磁盘/dev/sda的总大小,然后传给pv的-s参数,这样pv就能计算出实时的进度百分比了:

# 先获取磁盘总字节数
DRIVE_SIZE=$(blockdev --getsize64 /dev/sda)
# 再执行mksquashfs命令
mksquashfs empty-dir squash.img -p "sda_backup.img f 444 root root dd if=/dev/sda bs=4M | pv -s $DRIVE_SIZE 2>/dev/tty"

原理很简单:mksquashfs在处理-p参数里的命令时,会捕获命令的标准输出用来写入镜像内的sda_backup.img文件,但pv的进度信息是通过标准错误输出的,默认情况下这个错误输出可能被mksquashfs的执行环境抑制,而我们把它直接重定向到/dev/tty(当前终端),就能让进度信息直接显示在你的窗口里了。

备注:内容来源于stack exchange,提问作者localhost

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 07:53:03