当使用--line-buffer选项时,gnu parallel会压缩ssh和scp的输出

时间:2015-03-26 14:30:17

标签: bash ssh stdout gnu-parallel

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

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

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

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

当我尝试使用--line-buffer时,即使线程完成,我也没有得到任何输出。

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

parallel -q ssh user@{} 'ls && sleep 4 && ls' ::: host1 host2

我一直在看这个非常相似的问题https://unix.stackexchange.com/questions/101360/scp-does-not-display-output-when-used-with-gnu-parallel,但建议使用脚本命令的解决方案对我不起作用。可能是因为我的系统不是linux。 (使用Solaris)。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果要在一堆计算机上运行相同的命令,请使用--nonallhttps://www.gnu.org/software/parallel/parallel_tutorial.html#Running-the-same-commands-on-all-hosts

我们需要确定它是由于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

你以某种方式启用了 - 压缩(这会解释行为)吗?