bash - varios - cómo especificar el archivo de registro de errores y el archivo de salida en qsub
mover varios archivos en linux (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, bash está buscando una variable llamada $ {SEED_output} que no existe.
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 es igual de diferente) lugar (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?
Normalmente, los archivos de error y de salida se proporcionan como directivas pbs en el script qsub o como opciones de línea de comandos al script qsub, de esta forma:
#! /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 verá las líneas comentadas. Además, creo que PBS se ocupa de las líneas comentadas antes de que lo haga el shell. Si conoce la ruta cuando está invocando qsub, puede probar la segunda opción. Alternativamente, puede intentar simplemente redirigir la salida y el error en el script en sí:
/home/user1/run.sh $SEED > ${SEED}/output.txt 2> ${SEED}/error.txt
La tercera opción es probablemente la más fácil. Es posible que los archivos de salida y de error aún se creen en el directorio de ejecución, aunque probablemente estén vacíos.