Вы можете самостоятельно перенаправить вывод вашего скрипта Python в свой скрипт отправки и либо отказаться от записи журнала Slurm, либо записать в журнал Slurm интересную информацию о задании в целях отслеживания происхождения и воспроизводимости.
Сценарий отправки может выглядеть следующим образом:
#!/bin/bash
# Set up and run job array for my_script.py, which takes as positional
# arguments a config file (passed via $1) and an array index.
#SBATCH --array=1-100
#SBATCH -n 1
#SBATCH -t 12:00:00
#SBATCH -p short
#SBATCH -J sim_sumstats
#SBATCH --mem=1600
now=$(date +"%y%m%d-%H%M")
name=$(basename $1 .json)
logpath="log/my_script_name/$name/$now"
mkdir -p $logpath
logfile="$logpath/${SLURM_ARRAY_TASK_ID}.out"
echo "Writing to ${logfile}"
scontrol show -dd job $SLURM_JOB_ID
printenv
python ./my_script.py $1 ${SLURM_ARRAY_TASK_ID} > ${logfile}
Таким образом, выходные данные из сценария Python будут там, где вы хотите, и родительский каталог будет создан до того, как файл журнала будетсоздал.
Кроме того, у вас будет стандартный выходной файл, созданный Slurm, со схемой именования по умолчанию, содержащий информацию о задании (из scontrol
) и из среды (с printenv
).
Но если вы хотите, чтобы Slurm не пытался создать выходной файл, установите --output=/dev/null
.