2013-03-26 64 views
0

我正在为2个群集上的操作编写脚本。如何使用ssh在两个群集之间的qsub脚本中运行本地脚本?

我的目标是只关注一个集群,这意味着每个脚本源代码只在其中一个集群上。

例如,在集群AI已经安装了所有的脚本,现在我想ssh到集B运行这些脚本,而不必在群集B.重新安装它们

我知道有像ssh [email protected] 'bash -s' < local_ClusterA_script.sh然后集B bash脚本从ClusterA运行local_ClusterA_script.sh。

现在有,我必须使用ssh从集群一对集B提交批作业的另一项挑战,这个批处理作业从集群A.需要一个脚本

# run.sh : 

#!/bin/bash 

INPUT_ARGS="[email protected]" 
qsub -v argv="$INPUT_ARGS" -l arch=x86_64 -l walltime=10:00:00 -l vmem=8GB -l nodes=1:ppn=6 $CLUSTERA_BIN/run.script 

# run.script 
runprogram() 
{ 
    #Input 
    INPUT_ARGS=`echo $argv` 
    $CLUSTERA_BIN/runprogram.py "$INPUT_ARGS" ; 
} 

所以我的问题出在哪里集群B发现$CLUSTERA_BIN/runprogram.py?如何使run.script中的代码在群集B上成功运行?

一个命令我认为它会是ssh [email protected] 'bash -s' < run.sh $MYARGS,但显然它不会像这样工作。

回答

2

集群B必须访问它需要的文件。所以,你有一些选择:

  1. 改变你的想法和复印件(指scprsync,...)文件到群集B.你也可以考虑使用一个版本控制系统(如svngit,... )在多个主机之间同步文件。
  2. 当群集B需要一个文件时,可以在群集A上快速获取它(例如,使用无密码scp)。
  3. 把你的文件下群集A和份额的一个目录(指NFSSMB,...)的目录到群集B.
  4. ......
+0

我的经验是把脚本在可通过网络访问的文件系统上,人们通常会这样做。 – dbeer 2013-03-28 16:23:34

相关问题