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

如何让pv工具在远程SSH会话中正常显示进度?

如何让pv工具在远程SSH会话中正常显示进度?

我之前也碰到过一模一样的问题,其实原因很直观:远程运行的pv检测不到交互式终端环境——毕竟它的输出被管道传到了本地的gunzip,而且默认SSH远程执行命令时是非交互式会话,所以pv自动跳过了进度输出。

给你两个实用的解决办法:

  • 方法一:强制pv输出进度(推荐)
    用pv的-f(--force)参数,让它不管有没有终端都强制把进度信息输出到stderr(默认就是stderr,会被SSH转发到你的本地终端)。把命令改成这样:

    ssh user@server.eu "pv -f ~/Documents/Local/staging.sql.gz" | gunzip > /dev/null
    

    要是想看到更详细的进度数据(比如百分比、已用时间、预计完成时间),可以再加几个参数:

    ssh user@server.eu "pv -ptef ~/Documents/Local/staging.sql.gz" | gunzip > /dev/null
    

    这里-p显示进度百分比,-t显示已消耗时间,-e显示预计完成时间,-f负责强制输出进度。

  • 方法二:让SSH分配伪终端
    用ssh的-t参数给远程会话分配一个伪终端,这样pv会以为自己在交互式终端里,自然就会输出进度了:

    ssh -t user@server.eu "pv ~/Documents/Local/staging.sql.gz" | gunzip > /dev/null
    

    不过这个方法偶尔会因为终端控制字符出现奇怪的输出,要是遇到这种情况,换回方法一就没问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 11:24:33