将输出重定向到太阳网格引擎阵列作业(SGE)的不同文件

时间:2013-02-26 12:37:10

标签: grid stdout sun sungridengine

我正在尝试执行sun grid engine数组作业,每个任务需要一个不同的输出文件:test.1.out test.2.out等。

如果我像这样写我的剧本:

#!/bin/bash
#$ -S /bin/bash
#$ -N name
#$ -t 1-4000
#$ -o /home/myuser/out/test.$TASK_ID.out
#$ -e /home/myuser/err/test.$TASK_ID.err
#$ -cwd
#$ -V
<bash commands here>

文件名为$ TASK_ID.out(1.out,2.out等等)和/ home / myuser /

如果我像这样写我的剧本:

#!/bin/bash
#$ -S /bin/bash
#$ -N name
#$ -t 1-4000
#$ -o /home/myuser/out/
#$ -e /home/myuser/err/
#$ -cwd
#$ -V
<bash commands here>

文件位于正确的文件夹中,但显然是默认名称:name.o $ JOB_ID。$ TASK_ID

我该怎么办?

2 个答案:

答案 0 :(得分:2)

如果实时编写具体命名的输出文件很重要,您可以绕过SGE的内置输出集合并调用bash命令,如

$command 1>>/home/myuser/out/test.$SGE_TASK_ID.out 2>>/home/myuser/err/test.$SGE_TASK_ID.err

捕获stdout和stderr。

这两个例子看起来都非常接近你想要的 - 任何理由都不能在事后简单地移动/重命名输出文件?

答案 1 :(得分:1)

尝试这样的事情:

#!/bin/bash
#$ -S /bin/bash
#$ -N name
#$ -t 1-4000
#$ -o /dev/null
#$ -e /dev/null
#$ -cwd
#$ -V
exec >/home/myuser/out/test.${SGE_TASK_ID}.out 2>/home/myuser/err/test.${SGE_TASK_ID}.err
echo whatever