Bash 当使用--line buffer选项时,gnu并行抑制ssh和scp的输出

Bash 当使用--line buffer选项时,gnu并行抑制ssh和scp的输出,bash,ssh,stdout,gnu-parallel,Bash,Ssh,Stdout,Gnu Parallel,我正在尝试使用gnu并行运行一些ssh和scp命令 当我不使用-u或--line缓冲区选项时,我可以在线程完成后看到每个线程的输出 因为我的ssh命令需要一段时间,所以我希望在输出发生时看到它 当我尝试使用-u时,标记不起作用 当我尝试使用--line buffer时,即使在线程完成之后,我也不会得到任何输出 我编写了这个简单的测试命令,其行为方式与此相同: parallel -q ssh user@{} 'ls && sleep 4 && ls' ::: hos

我正在尝试使用gnu并行运行一些ssh和scp命令

当我不使用-u或--line缓冲区选项时,我可以在线程完成后看到每个线程的输出

因为我的ssh命令需要一段时间,所以我希望在输出发生时看到它

当我尝试使用
-u
时,标记不起作用

当我尝试使用
--line buffer
时,即使在线程完成之后,我也不会得到任何输出

我编写了这个简单的测试命令,其行为方式与此相同:

parallel -q ssh user@{} 'ls && sleep 4 && ls' ::: host1 host2
我一直在研究这个非常类似的问题,但是使用script命令的建议解决方案对我来说不起作用。可能是因为我的系统不是linux。(我正在使用Solaris)


任何帮助都将不胜感激。

如果您想在多台机器上运行相同的命令,请使用
--nonall

我们需要确定这是由于ssh造成的,还是一个普遍的问题。因此,请测试这些:

parallel --version
parallel --line-buffer 'echo {}; sleep 4; echo {}' ::: a b c
parallel --tag --line-buffer 'echo {}; sleep 4; echo {}' ::: a b c
parallel -S host1 --line-buffer 'echo {}; sleep 4; echo {}' ::: a b c
parallel -S host2 --line-buffer 'echo {}; sleep 4; echo {}' ::: a b c
parallel -S host1,host2 --line-buffer 'echo {}; sleep 4; echo {}' ::: a b c
parallel -S host1 --tag --line-buffer 'echo {}; sleep 4; echo {}' ::: a b c
parallel -S host2 --tag --line-buffer 'echo {}; sleep 4; echo {}' ::: a b c
parallel -S host1,host2 --tag --line-buffer 'echo {}; sleep 4; echo {}' ::: a b c

您是否以某种方式启用了--compress(这可以解释这种行为)?

您是否知道,在您的示例中,只有第一个
ls
远程运行?
sleep4&&ls
在本地运行。使用
-q
引用字符串,或者“您的本地和远程系统都是solaris吗?”?哪些版本(uname-a)。捡拾良好,已更正并添加-q。本地uname-a是“SunOS myhost 5.10 Generic_150401-11 i86pc i386 i86pc”,第一个远程uname-a是“Linux host1 2.6.32-504.8.1.el6.x86_64#1 SMP Fri Dec 19 12:09:25 EST 2014 x86_64 x86_64 GNU/Linux”,第二个远程框也是Linux。是的,这看起来是运行远程命令的另一种方式。但是,输出(在我的设置中)将一直保持到线程完成为止。即使使用--line缓冲区。当使用-u标志时,我确实看到了输出,但是标记不起作用(我确实需要)Hi-Ole,感谢您花时间尝试并帮助我。我已经运行了所有的命令。似乎使用parallel-S需要在远程主机上安装parallel?我收到很多“并行:未找到命令”错误。我应该提到,我不能保证远程主机已并行安装。远程安装仅用于检测CPU的数量。您不需要远程安装它。也许我们应该在邮件列表上进行调试?parallel@gnu.org