Команда Popen не запускает код в кластере - PullRequest
0 голосов
/ 17 января 2019

Я хочу запустить код Python, который отправляет другой код bash в кластер (slurm). По какой-то причине bash-код не запускается, но я вообще не получаю ошибок (я думаю, что python отправляет работу, потому что я могу получить идентификационный номер работы).

Внутри скрипта я определил «команду» как команду, которую нужно выполнить. Он вызывает другой скрипт bash "svm_run.sh", который получает два параметра "путь / соответствие" и "имя выполнения".

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}.$$
...