Parallel processing 当使用--onall时,GNU parallel不会在远程服务器上并行运行
我正在尝试在多个远程服务器上运行一个脚本,使用多个参数。GNU并行命令是:Parallel processing 当使用--onall时,GNU parallel不会在远程服务器上并行运行,parallel-processing,gnu-parallel,Parallel Processing,Gnu Parallel,我正在尝试在多个远程服务器上运行一个脚本,使用多个参数。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
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正在运行带有参数1的script.sh
- rh32运行script.sh和param2
- rh64正在运行带有参数1的script.sh
- rh64使用param2运行script.sh
- rh32正在运行带有参数1的script.sh
- rh64正在运行带有参数1的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