如何在qsub中指定错误日志文件和输出文件

d.p*_*tto 25 bash cluster-computing qsub sungridengine

我有一个qsub脚本

#####----submit_job.sh---#####
    #!/bin/sh
    #$ -N job1
    #$ -t 1-100
    #$ -cwd
    SEEDFILE=/home/user1/data1
    SEED=$(sed -n -e "$SGE_TASK_ID p" $SEEDFILE)
    /home/user1/run.sh $SEED 
Run Code Online (Sandbox Code Playgroud)

问题是 - 它将所有错误和输出文件(job1.eJOBID和job1.oJOBID)放在我运行qsub submit_job.sh的同一目录中,而我想保存这些文件(输出和错误日志文件在相同的不同place(指定为$ SEED_output).我试图将行更改为

/home/user1/run.sh $SEED -o $SEED_output
Run Code Online (Sandbox Code Playgroud)

但它没有用.有什么建议?? 如何指定默认输出和错误日志文件的路径和名称?

And*_*ndy 37

通常,错误和输出文件在qsub脚本中作为pbs指令给出,或者作为qsub脚本的命令行选项给出,如下所示:

#! /bin/bash
#PBS -q queue_name
#PBS -A account_name
#PBS -l nodes=12:ppn=12
#PBS -l walltime=18:00:00
#PBS -e /mypath/error.txt
#PBS -o /mypath/output.txt
Run Code Online (Sandbox Code Playgroud)

或者作为qsub的命令行选项,如下所示:

qsub -o /mypath/output.txt -e /mypath/error.txt submit_job.sh
Run Code Online (Sandbox Code Playgroud)

使用第一个选项我不认为你可以使用变量,因为shell不会查看被注释的行.另外我认为PBS会在shell之前处理注释行.如果您在调用qsub时知道路径,则可以尝试第二个选项.或者,您可以尝试简单地重定向脚本本身的输出和错误:

/home/user1/run.sh $SEED > ${SEED}/output.txt 2> ${SEED}/error.txt
Run Code Online (Sandbox Code Playgroud)

第三种选择可能是最简单的.输出和错误文件可能仍会在运行目录中创建,但它们可能是空的.

  • 我可以在#PBS -o行中使用PBS变量,如$ PBS_JOBID. (4认同)