如何使用ssh在两个集群之间的qsub脚本中运行本地脚本?

时间:2013-03-26 03:13:27

标签: bash ssh cluster-computing qsub

我正在为2个集群上的操作编写脚本。

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

例如在群集A中我安装了所有脚本,现在我想ssh到群集B来运行这些脚本而无需在群集B上再次安装它们。

我知道像ssh root@ClusterB 'bash -s' < local_ClusterA_script.sh这样的bash脚本,然后群集B从ClusterA运行local_ClusterA_script.sh。

现在还有一个挑战,我必须使用ssh从群集A在群集B上提交批处理作业,此批处理作业需要群集A中的脚本。

# run.sh :

#!/bin/bash

INPUT_ARGS="$@"
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中的代码在Cluster B上成功运行?

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

1 个答案:

答案 0 :(得分:2)

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

  1. 改变主意并将(scprsync,...}文件复制到群集B.您还可以考虑使用版本控制系统(如svn,{{ 1}},...)在多个主机之间同步文件。
  2. 当群集B需要文件时,可以即时从群集A获取文件(例如,使用无密码git)。
  3. 将您的文件放在群集A的一个目录下,并将该目录分享(表示scpNFS,...)到群集B。
  4. ......