当使用--line buffer选项时,gnu并行支持ssh和scp的输出



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

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

因为我的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但建议的使用script命令的解决方案对我不起作用。可能是因为我的系统不是linux。(我使用的是Solaris)。

如有任何帮助,我们将不胜感激。

如果您想在一堆机器上运行相同的命令,请使用--nonall。https://www.gnu.org/software/parallel/parallel_tutorial.html#Running-所有主机上的相同命令

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

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

最新更新