我通过qsub提交时使用-N选项指定作业的名称 . 但是,qsub会在man页面中描述的man名称之后添加一些数字字符串:默认情况下,标准输出的文件名的格式为job_name.ojob_id,job_name.ojob_id.task_id用于阵列作业任务(请参阅下面的-t选项) .
因此,每当我提交具有相同作业名称的新作业时,会在作业名称中添加新后缀.ojob_id,并创建新的输出文件 .
我想要实现的是每次通过qsub提交作业时都有相同的输出文件 . 我怎样才能做到这一点?我必须多次运行一个作业,我希望运行的输出覆盖上一次运行中生成的输出文件 . 我怎样才能做到这一点?请参阅以下示例:
第一次命令运行脚本 hello_world
输出 log_hello_world
:
qsub -cwd -N log_hello_world hello_world.sh
它创建了两个输出文件:
log_hello_world.e7584345
log_hello_world.o7584345
第二次给出相同的命令:它再创建两个输出文件
log_hello_world.e7584366
log_hello_world.o7584366
我该怎么做才能在一个文件中获得输出 log_hello_world
.
2 回答
我能够通过使用选项-o和-e分别保存日志和错误文件来解决此问题 . 使用这些选项,每次从此命令将日志和作业中的错误写入同一文件 .
您应该附加一个具有固定名称的文件 . 这是在您运行的代码中完成的 . 您在目录中创建一个文件,然后在每次运行代码时将其附加到新结果中 . 因此,在您的代码中(不在qsub行中),显式添加一行代码,要求将结果写入目录中的文件,在Mathematica中这将是
其中results是包含计算结果的变量 . 然后使用
qsub -N log_hello_world hello_world.sh
运行作业 . 每次运行作业时,这都会将结果写入同一文件,而不更改文件名 . (如果您要将-o和-e文件写入同一文件,则可以在指定错误文件的文件路径后将-j y
添加到qsub)