5

我正在尝试执行太阳网格引擎阵列作业,并且每个任务需要不同的输出文件: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

我应该怎么办?

4

2 回答 2

3

如果实时编写专门命名的输出文件很重要,您可能会绕过 SGE 的内置输出集合并调用 bash 命令,例如

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

捕获标准输出和标准错误。

这两个示例似乎都非常接近您想要的 - 有什么理由不在事后简单地移动/重命名输出文件?

于 2013-04-25T23:03:51.270 回答
2

尝试这样的事情:

#!/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
于 2013-10-16T20:47:53.680 回答