2012-02-01 19 views
19

Tengo un script qsub comocómo especificar el archivo de registro de errores y el archivo de salida en 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 

es-- El problema que pone todos los archivos de error y de salida (job1.eJOBID & job1.oJOBID) a la mismo directorio desde donde estoy corriendo submit_job.sh qsub mientras que yo quiero salvar estos archivos (archivo de salida y registro de errores en el mismo lugar diferente (especificado como $ SEED_output). me trató de cambiar la línea como

/home/user1/run.sh $SEED -o $SEED_output 

Pero no funcionó. ¿Alguna sugerencia? ¿Cómo puedo especificar la ruta y nombre de la salida predeterminada y el archivo de registro de errores?

Respuesta

28

Normalmente archivos de error y de salida se dan como directivas pbs en el guión qsub o como opciones de línea de comandos a la secuencia de comandos qsub así:

#! /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 

o como una opción de línea de comandos para qsub así:

qsub -o /mypath/output.txt -e /mypath/error.txt submit_job.sh 

Con la primera opción, no creo que pueda usar una variable, ya que el shell no verá las líneas comentadas. Además, creo que PBS trata las líneas comentadas antes de que el caparazón lo haga. Si conoce la ruta cuando está invocando qsub, puede probar la segunda opción. Alternativamente usted podría intentar simplemente redirigiendo la salida y el error en el propio guión:

/home/user1/run.sh $SEED > ${SEED}/output.txt 2> ${SEED}/error.txt 

La tercera opción es probablemente el más fácil. Es posible que aún se creen archivos de salida y error en el directorio de ejecución, aunque es probable que estén vacíos.

+4

Puedo usar variables de PBS como $ PBS_JOBID en la línea #PBS -o. – gerardw

+0

@gerardw quizás depende de la versión de las herramientas? No puedo usar variables de PBS en el #PBS -o línea (las variables no están resueltas). – waldyrious

2

A primera vista, necesita corchetes alrededor de su variable en la declaración -o.

/home/user1/run.sh $SEED -o ${SEED}_output 

De lo contrario fiesta está en busca de una variable llamada $ {} SEED_output que no existen.

+0

Gracias por mencionar eso, pero todavía no tengo suerte :(Probé /home/user1/run.sh $ SEED -o $ {SEED} _output y nada cambió. Solo para dejar las cosas claras $ SEED (o $ { SEED}) es la ruta a un directorio. Por lo tanto, creo que la salida debe guardarse en el archivo _output en el directorio $ {SEED}! –

+0

-o se pasa a run.sh, por lo que no funcionará a menos que run.sh maneje - o como un argumento de línea de comando. – Andy

Cuestiones relacionadas