Popen命令不会在集群中运行代码

时间:2019-01-17 13:54:51

标签: python subprocess slurm

我想运行一个python代码,该代码将另一个bash代码发送到集群(slurm)。出于某种原因,bash代码无法运行,但是我一点也没有收到任何错误(我认为python发送该作业是因为我可以检索该作业的ID号)。

在脚本中,我将“ command”定义为要执行的命令。它调用另一个bash脚本“ svm_run.sh”,该脚本接收两个参数“ path / fit”和“ runname”。

import subprocess as sp


command = '/home/saarb/SVM/svm/RUNS/svm_run.sh ' + runname + ' ' + path + '/fit'

ID = sp.Popen(command, shell=True, stdout=sp.PIPE, universal_newlines=True).communicate()[0]

ID = ID.split()[-1].strip()

但是,当我在前端计算机上的python提示符(不在脚本中)中使用完全相同的行时,我根本没有问题。

这是bash代码“ svm_run.sh”:

#!/bin/bash
#
cd ..

name=$1
path=$2
job_name=${name}


output_dir=/home/saarb/SVM/svm/output/${path}
input_dir=/home/saarb/SVM/svm/data/${path}

cat > sbatch_script.${job_name}.$$ << EOF
#!/bin/bash
#

#SBATCH --job-name=${job_name}
#SBATCH --output=${output_dir}/${job_name}.sc
#SBATCH --error=${output_dir}/${job_name}.sc
#SBATCH --partition=serial
#SBATCH --ntasks=1
#SBATCH --qos=serial



date 

# mpiexec ./svm.x ${path}/${name} > ${job_name}.out
mpiexec ./svm.x ${path}/${name}

echo "done!"
date
\rm sbatch_script.${job_name}.$$

EOF

sbatch sbatch_script.${job_name}.$$

0 个答案:

没有答案