繁体   English   中英

QSUB:为作业阵列中的每个任务指定输出和错误文件

[英]QSUB: Specify output and error files for each task in Job Array

希望这不是一个dublicate,也不仅仅是我们集群配置的问题......

我使用qsub使用以下命令将作业数组提交到集群:

qsub -q QUEUE -N JOBNAME -t 1:10 -e ${ERRFILE}_$SGE_TASK_ID /path/to/script.sh

哪里

ERRFILE=/home/USER/somedir/errors.

我们的想法是指定一个错误文件(也类似于输出文件),该文件还包含作业数组中的任务ID。

到目前为止,我已经了解了这一行

#$ -e ${ERRFILE}_$SGE_TASK_ID

在script.sh中,不起作用,因为它是一个注释而不是由bash评估。 我的第一行不起作用,因为$SGE_TASK_ID仅在作业提交后设置。
在这里读到逃避$SGE_TASK_ID的评估(在那个链接中它是PBS' $PBS_JOBID ,但类似的问题)应该有效,但是当我试过

qsub -q QUEUE -N JOBNAME -t 1:10 -e ${ERRFILE}_\$SGE_TASK_ID /path/to/script.sh

它没有按预期工作。

我错过了一些明显的东西吗 是否可以在错误文件的名称中使用$SGE_TASK_ID (错误文件的自动命名$SGE_TASK_ID ,但我想指定目录,如果可能的话也指定名称)?

一些补充说明:

  • 我在script.sh中使用qsub-cwd选项,但这不是我想要存储我的错误文件的地方。
  • 我几乎无法控制集群的工作方式,也没有root访问权限(在这种情况下我不知道我需要它,但无论如何......)。
  • 显然我们的集群不使用PBS。
  • 是的,我的脚本都是可执行的,并且在适当的情况下以#!/bin/bash开头(我还指定使用bash和qsub的-S /bin/bash选项)。
  • 似乎有一个解决方案在这里 ,但我不太清楚如何工作的,它似乎也采用PBS。 如果答案适用于我的问题并且我误解了它,请告诉我。

我希望任何暗示正确的方向。 谢谢!

我也不知道这一点,但看起来Grid Engine有一个叫做“伪环境变量”的东西,就像$TASK_ID一样。 这应该工作:

qsub -q QUEUE -N JOBNAME -t 1:10 -e ${ERRFILE}_\$TASK_ID /path/to/script.sh

手册页

  -e [[hostname]:]path,... ... If the pathname contains certain pseudo environment variables, their value will be expanded at runtime of the job and will be used to constitute the standard error stream path name. The following pseudo environment variables are supported currently: $HOME home directory on execution machine $USER user ID of job owner $JOB_ID current job ID $JOB_NAME current job name (see -N option) $HOSTNAME name of the execution host $TASK_ID array job task index number 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM