2012-04-10 16 views
9

Bir iş göndermeden önce parametreleri bir .pbs komut dosyasına doğrudan iletmenin bir yolu var mı? Farklı sayılar tarafından belirtilen dosyaların bir listesi üzerinde döngü ve her dosyayı analiz etmek için bir komut dosyası uygulamak gerekir. pass_test.pbsParametreleri doğrudan pbs komut dosyasına geçirme

#!/bin/sh 

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

aşağıdaki script:

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

Ama bu biraz sakat hissediyor

Ben ile gelip başardık iyi

şudur. Özellikle, bunun üstesinden gelmek için bir ortam değişkeni yaratmaktan kaçınmak istiyorum.

cevap

8

kullanarak burada bir sinek komut dosyaları oluşturabilirsiniz belgelemek böylece qsub yarar, standart girişten senaryoyu okuyabilir, dinamik: Şahsen

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

, ben daha kompakt bir sürümünü kullanmak istiyorsunuz : iş dizisi olurdu olarak

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

sadece sayıları geçmek ve giriş dosyası sayısı dışında aynı komutla işlerin listesini çalıştırmak gerekiyorsa, o döngü için yerine bir iş dizi kullanmak daha iyidir iş planlayıcısında daha az yük.

qsub -t 1-10 pass_test.pbs 

Belirtebileceğiniz burada: yazın

./run_test ${PBS_ARRAYID} 

Ve komut satırında, onu çağırmak için: çalıştırmak için

, sen pbs dosyasında böyle PBS_ARRAYID ile dosya numarasını belirtmek -t seçeneği

'dan sonra kullanılacak dizi dizisi
İlgili konular