将输出重定向到sun grid引擎阵列作业(SGE)的不同文件

将输出重定向到sun grid引擎阵列作业(SGE)的不同文件,grid,stdout,sun,sungridengine,Grid,Stdout,Sun,Sungridengine,我正在尝试执行sun grid引擎阵列作业,每个任务需要不同的输出文件: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> #!/bi

我正在尝试执行sun grid引擎阵列作业,每个任务需要不同的输出文件: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>
#!/bin/bash
#$ -S /bin/bash
#$ -N name
#$ -t 1-4000
#$ -o /home/myuser/out/
#$ -e /home/myuser/err/
#$ -cwd
#$ -V
<bash commands here>
#!/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
#/bin/bash
#$-S/bin/bash
#$-N名称
#$-t 1-4000
#$-o/home/myuser/out/test.$TASK\u ID.out
#$-e/home/myuser/err/test.$TASK\u ID.err
#$-cwd
#$-V
这些文件称为$TASK_ID.out(1.out、2.out等)和at/home/myuser/

如果我这样写剧本:

#!/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>
#!/bin/bash
#$ -S /bin/bash
#$ -N name
#$ -t 1-4000
#$ -o /home/myuser/out/
#$ -e /home/myuser/err/
#$ -cwd
#$ -V
<bash commands here>
#!/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
#/bin/bash
#$-S/bin/bash
#$-N名称
#$-t 1-4000
#$-o/home/myuser/out/
#$-e/home/myuser/err/
#$-cwd
#$-V
文件位于正确的文件夹中,但显然具有默认名称:name.o$JOB\u ID.$TASK\u ID


我该怎么办?

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

$command 1>>/home/myuser/out/test.$SGE_TASK_ID.out 2>>/home/myuser/err/test.$SGE_TASK_ID.err
捕获stdout和stderr


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

尝试以下方法:

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