0

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

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

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

我知道使用 bash 脚本,ssh root@ClusterB 'bash -s' < local_ClusterA_script.sh然后 Cluster 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 中的代码在集群 B 上成功运行?

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

4

1 回答 1

2

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

  1. 改变主意,将(意味着scp, rsync, ...)文件复制到集群 B。您还可以考虑使用版本控制系统(如svn, git, ...)在多个主机之间同步文件。
  2. 当集群 B 需要一个文件时,动态从集群 A 获取它(例如使用无密码scp)。
  3. 将您的文件放在集群 A 的一个目录下,并将该目录共享(意味着NFS, SMB, ...)到集群 B。
  4. ……
于 2013-03-26T04:53:33.910 回答