我正在尝试使用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)。
任何帮助都将不胜感激。
答案 0 :(得分:1)
如果要在一堆计算机上运行相同的命令,请使用--nonall
。
https://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
你以某种方式启用了 - 压缩(这会解释行为)吗?