2012-04-10 12 views
9

Gibt es eine Möglichkeit, Parameter direkt an ein .pbs-Skript zu übergeben, bevor ein Job übergeben wird? Ich muss eine Liste von Dateien durchlaufen, die durch unterschiedliche Nummern angezeigt werden, und ein Skript anwenden, um jede Datei zu analysieren.Parameter direkt an pbs-Skript übergeben

Das Beste, was ich habe in der Lage gewesen, mit zu kommen ist die folgende:

#!/bin/sh 

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

wo pass_test.pbs ist das folgende Skript:

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

Aber das fühlt sich ein bisschen wackelig. Insbesondere möchte ich vermeiden, eine Umgebungsvariable erstellen zu müssen, um damit umzugehen.

Antwort

8

Das qsub Programm, um das Skript von der Standardeingabe lesen kann, so dass ein hier durch die Verwendung dokumentieren Sie Skripts on the fly, dynamisch erstellen:

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

Persönlich würde ich eine kompaktere Version verwenden :

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

Wenn Sie nur Zahlen übergeben müssen und eine Liste von Jobs mit dem gleichen Befehl mit Ausnahme der Eingabedatei Nummer laufen, dann ist es besser für die Schleife anstelle einem Job-Array zu verwenden, wie es Job Array weniger Belastung für den Jobplaner.

Programme benötigen Sie die Dateinummer mit PBS_ARRAYID wie dies in der pbs-Datei angeben:

./run_test ${PBS_ARRAYID} 

Und es aufzurufen, auf der Kommandozeile ein:

qsub -t 1-10 pass_test.pbs 

wo Sie angeben können, welche Array-ID nach -t Option

verwendet werden soll
Verwandte Themen