远程执行含pv的脚本时,如何查看pv工具的运行状态?
实现本地查看远程执行的pv工具状态
可以在本地看到pv的运行状态,以下是两种可行的方法:
方法一:通过ssh强制分配伪终端
默认情况下,ssh执行远程命令时不会分配交互式终端,pv会因为检测不到终端环境而不实时输出进度。加上-t参数让ssh在远程分配伪终端,就能让pv正常输出实时状态:
ssh -t root@machineB 'script.sh'
如果script.sh不在远程用户的PATH路径下,记得写绝对路径,比如:
ssh -t root@machineB '/home/youruser/script.sh'
方法二:修改脚本强制pv输出进度
如果不想使用伪终端,可以修改远程的script.sh,给pv加上-f(--force)参数,强制它输出进度信息,不管当前是否为终端环境:
#!/bin/bash dd if=/dev/zero | pv -f | dd of=/test.img
之后直接用原来的ssh命令执行:
ssh root@machineB 'script.sh'
pv的进度信息会通过stderr转发到本地终端,你就能实时看到状态了。
如果需要更详细的进度信息,还可以给pv添加额外参数,比如pv -f -trab会显示耗时、传输速率、已传输字节数和进度条。
内容的提问来源于stack exchange,提问作者Vvojtek
相关产品推荐
相关产品推荐

