【问题标题】:GNU parallel does not run in parallel on remote servers when using --onall使用 --onall 时,GNU 并行不会在远程服务器上并行运行
【发布时间】:2013-12-30 12:25:56
【问题描述】:

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

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

script.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

-正在并行运行。 完成后,其他两个正在并行运行。

如何让这四个同时并行运行?

谢谢,

【问题讨论】:

    标签: parallel-processing gnu-parallel


    【解决方案1】:

    您正在做出设计决策:运行 --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
    

    【讨论】:

      猜你喜欢
      • 2020-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-06
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多