Python 3.6
Итак, у меня есть функция, которая просто отправляет задание в SLURM.В настоящее время меня не волнует вывод «Задание отправлено, идентификатор работы».Проблема заключается в том, что флаги --output
и --error
не генерируют выходные файлы в каталогах, которые я отметил.
def submitJob(self):
# self.DEV_DIR and self.IDENT_DIR are absolute paths.
cmds = [
"sbatch",
"-A",
"devtest",
"-p",
"general",
"--qos=normal",
"-J",
'"Parentage - %s - %s"' % (self.farmID, self.ident),
"--nice=0",
"-c",
"1",
"--mem=10240", # MB
"--time=00:10:00",
"--output",
"%s/p_done.log" % (self.IDENT_DIR),
"--error",
"%s/p_error.log" % (self.IDENT_DIR),
"PARENT/run_job.sh %s %s" % (self.farmID, self.ident)
]
cmd = " ".join(cmds)
p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE,
shell=True, cwd=self.DEV_DIR+"/PROG", universal_newlines=True)
output, err = p.communicate()
return (output, err)
Для ясности, задание отправляется.Если я обычно вызываю sbatch через командную строку, файлы журнала создаются.
Я думаю, что после отправки задания канал stdout полностью закрывается, а файлы журнала не создаются.Мне нужны эти файлы журналов для генерации, следовательно, проблема.Альтернативой является запуск run_job.sh для создания простого «готового» файла в каталоге впоследствии (скрипт следит за созданием этих файлов), но это не сработает, если задание истекло.
Каталогисуществует, когда эта команда запущена.
Я упускаю что-то очевидное, что мешает мне получать выходные файлы из sbatch в этом случае?