Python 3.6
因此,我有一个仅向SLURM提交作业的功能。我目前并不在乎“作业已提交,作业ID”的输出。问题是--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获取输出文件?