cómo especificar el archivo de registro de errores y el archivo de salida en qsub

Tengo un script qsub como

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

El problema es que coloca todos los archivos de error y salida (job1.eJOBID & job1.oJOBID) en el mismo directorio desde donde estoy ejecutando qsub submit_job.sh mientras quiero guardar estos archivos (el archivo de registro de salida y error en el mismo diferente place (especificado como $ SEED_output). Intenté cambiar la línea como

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

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

preguntado el 01 de febrero de 12 a las 13:02

Yo tenia en slurm #SBATCH --output="demo.%j.%N.out" #SBATCH --error="demo.%j.%N.err", ¿cómo lo adapto a qsub? -

relacionado: community.openpbs.org/t/… How to include the job id and other info in the output file for qsub? -

3 Respuestas

Por lo general, los archivos de error y salida se dan como directivas pbs en el script qsub o como opciones de línea de comando para el script 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 comando 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 mira las líneas que están comentadas. Además, creo que PBS se ocupa de las líneas comentadas antes que el shell. Si conoce la ruta cuando invoca qsub, puede probar la segunda opción. Alternativamente, puede intentar simplemente redirigir la salida y el error en el propio script:

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

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

Respondido 13 ago 15, 23:08

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

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

Yo tenia en slurm #SBATCH --output="demo.%j.%N.out" #SBATCH --error="demo.%j.%N.err", ¿cómo lo adapto a qsub? - Charlie Parker

¿Qué pasa si desea incluir el número de identificación del trabajo y otra información como esa? - Charlie Parker

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, bash está buscando una variable llamada $ {SEED_output} que no existe.

Respondido 02 Feb 12, 00:02

Gracias por mencionar eso, pero sigo sin tener suerte :( Probé /home/user1/run.sh $ SEED -o $ {SEED} _output y no cambió nada. Solo para aclarar las cosas $ SEED (o $ {SEED}) es la ruta a un directorio. ¡Así que creo que la salida debería guardarse en el archivo _output en el directorio $ {SEED}! d.putto

-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

Yo tenia en slurm #SBATCH --output="demo.%j.%N.out" #SBATCH --error="demo.%j.%N.err", ¿cómo lo adapto a qsub? - Charlie Parker

¿Qué pasa si desea incluir el número de identificación del trabajo y otra información como esa? - Charlie Parker

Tuve el mismo problema. Y mi solución fue tener:

#$ -N script-name
#$ -wd <path-to-project>/log 
cd ..

en el script qsub. Ahora el error y el archivo de salida se guardan en <path-to-project>/log y el guión funciona en <path-to-project> Al menos para mí eso funcionó

respondido 13 mar '21, 10:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.