gpt4 book ai didi

parallel-processing - 使用 --onall 时,GNU 并行不会在远程服务器上并行运行

转载 作者:行者123 更新时间:2023-12-05 01:05:52 25 4
gpt4 key购买 nike

我正在尝试在多个远程服务器上运行一个带有多个参数的脚本。 GNU 并行命令是:

parallel --onall -S ${RH32},{RH64} /shared/loc/script.sh ::: param1 param2

脚本.sh:
host=`uname -n`
param=$1
logfile=/shared/loc/log-$host-$param
for i in `seq 1 5`; do
touch ${logfile}_$i
sleep 2
done

我正在尝试并行运行 4 个进程:
  • rh32 使用 param1 运行 script.sh
  • rh32 使用 param2 运行 script.sh
  • rh64 使用 param1 运行 script.sh
  • rh64 使用 param2 运行 script.sh

  • 在查看累积的输出时,似乎真正发生的是这样的:
  • rh32 使用 param1 运行 script.sh
  • rh64 使用 param1 运行 script.sh

  • - 并行运行。 当他们完成时 ,另外两个并行运行。

    我怎样才能让它们四个同时并行运行?

    谢谢,

    最佳答案

    您正在做出设计决策:运行 --onall 时 -j 是什么意思?决定是 -j 是同时运行的主机数(在您的情况下为 2)。这样做是为了很容易在多个主机上并行地串行运行命令。

    你能做的,就是包裹你的parallel命令与另一个 parallel命令:

    parallel parallel --onall -S ${RH32},${RH64} --argsep // /shared/loc/script.sh // ::: param1 param2

    这将产生 parallel对于每个参数和内部 parallel将为每个服务器生成。

    另一种解决方案是自己编写 ssh 命令:
    parallel ssh {1} /shared/loc/script.sh {2} ::: ${RH32} ${RH64} ::: param1 param2

    关于parallel-processing - 使用 --onall 时,GNU 并行不会在远程服务器上并行运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20839545/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com