2012-04-10 12 views
9

पर पैरामीटर पास करें क्या नौकरी सबमिट करने से पहले एक .pbs स्क्रिप्ट पर सीधे पैरामीटर पास करने का कोई तरीका है? मुझे अलग-अलग संख्याओं द्वारा संकेतित फ़ाइलों की एक सूची पर लूप करने की आवश्यकता है और प्रत्येक फ़ाइल का विश्लेषण करने के लिए एक स्क्रिप्ट लागू करें।सीधे पीबीएस स्क्रिप्ट

#!/bin/sh 

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

जहां pass_test.pbs निम्न स्क्रिप्ट है:

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

लेकिन यह थोड़ा wonky लगता है

सबसे अच्छा मैं के साथ आने कर लिया है निम्नलिखित है। विशेष रूप से, मैं इसे संभालने के लिए एक पर्यावरण परिवर्तक बनाने से बचना चाहता हूं।

उत्तर

8

qsub उपयोगिता इसलिए का उपयोग करके एक यहाँ दस्तावेज़ आप मक्खी पर स्क्रिप्ट बना सकते हैं, मानक इनपुट से स्क्रिप्ट पढ़ सकते हैं, गतिशील:

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

व्यक्तिगत रूप से, मैं एक अधिक कॉम्पैक्ट संस्करण का प्रयोग करेंगे :

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

आप सिर्फ संख्या गुजरती हैं और इनपुट फ़ाइल नंबर को छोड़कर एक ही कमांड के साथ कार्यों की सूची को चलाने के लिए जरूरत है, यह पाश के लिए एक के बजाय एक नौकरी सरणी उपयोग करना बेहतर है के रूप में काम सरणी के लिए होता है नौकरी शेड्यूलर पर कम बोझ। प्रकार

./run_test ${PBS_ARRAYID} 

और यह आह्वान करने के लिए, कमांड लाइन पर,:

qsub -t 1-10 pass_test.pbs 

जहां निर्दिष्ट कर सकते हैं

चलाने के लिए आपको PBS_ARRAYID के साथ फाइल संख्या इस तरह पीबीएस फ़ाइल में निर्दिष्ट -t विकल्प

के बाद उपयोग करने के लिए कौन सी सरणी आईडी
संबंधित मुद्दे