2012-04-10 16 views
9

¿Hay alguna forma de pasar parámetros directamente a una secuencia de comandos .pbs antes de enviar una tarea? Necesito recorrer una lista de archivos indicados por diferentes números y aplicar un script para analizar cada archivo.Pase directamente parámetros a la secuencia de comandos pbs

El mejor que he podido llegar a es la siguiente:

#!/bin/sh 

for ((i= 1; i<= 10; i++)) 
do 
     export FILENUM=$i 
     qsub pass_test.pbs 
done 

donde pass_test.pbs es el guión siguiente:

#!/bin/sh 

#PBS -V 
#PBS -S /bin/sh 
#PBS -N pass_test 
#PBS -l nodes=1:ppn=1,walltime=00:02:00 
#PBS -M [email protected] 

cd /scratch/XXXXXX/pass_test 

./run_test $FILENUM 

Pero esto se siente un poco torcidas. Particularmente, quiero evitar tener que crear una variable de entorno para manejar esto.

Respuesta

8

La utilidad qsub puede leer el guión de la entrada estándar, por lo que mediante el uso de un documento Here puede crear guiones sobre la marcha, dinámicamente:

#!/bin/sh 

for i in `seq 1 10` 
do 
    cat <<EOS | qsub - 
#!/bin/sh 

#PBS -V 
#PBS -S /bin/sh 
#PBS -N pass_test 
#PBS -l nodes=1:ppn=1,walltime=00:02:00 
#PBS -M [email protected] 

cd /scratch/XXXXXX/pass_test 

./run_test $i 
EOS 
done 

En lo personal, me gustaría utilizar una versión más compacta :

#!/bin/sh 

for i in `seq 1 10` 
do 
    cat <<EOS | qsub -V -S /bin/sh -N pass_test -l nodes=1:ppn=1,walltime=00:02:00 -M [email protected] - 
cd /scratch/XXXXXX/pass_test 
./run_test $i 
EOS 
done 
0

Si sólo tiene que pasar a los números y ejecutar una lista de trabajos con el mismo comando, excepto el número de archivo de entrada, es mejor utilizar una matriz trabajo en lugar de un bucle como una matriz de trabajo tendría menos carga en el programador de trabajo.

Para ejecutar, se especifica el número de expediente con PBS_ARRAYID como esta en el archivo de PBS:

./run_test ${PBS_ARRAYID} 

Y para alegar ésta, en la línea de comandos, escriba:

qsub -t 1-10 pass_test.pbs 

donde puede especificar qué ID de matriz usar después de -t opción

Cuestiones relacionadas