我正在为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
的一个命令,但显然它不会像这样工作。
答案 0 :(得分:2)
群集B必须访问它需要的那些文件。所以你有一些选择:
scp
,rsync
,...}文件复制到群集B.您还可以考虑使用版本控制系统(如svn
,{{ 1}},...)在多个主机之间同步文件。git
)。scp
,NFS
,...)到群集B。