Я хочу запустить код 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}.$$