2012-02-15 12 views
5

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

#!/bin/sh 
ARRAY=(0010.dat 0020.dat 0030.dat) 

rm batch_results.dat 
touch batch0.dat 
touch batch_results.dat 

for file in ${ARRAY[@]} 
do 
python fof.py $file > /dev/null 
python mdisk5.py > ./batch0.dat 
tail -1 batch0.dat 
tail -1 batch0.dat >> batch_results.dat 
done 

कार्यक्रम ठीक काम करता है जब मैं इसे चलाने जबकि सर्वर से जुड़े रहना, उदाहरण के लिए

./batch.sh > /dev/null & 
./batch.sh > ./output.txt & 

हालांकि, जब मैं nohup आदेश के साथ इसे चलाने के लिए प्रयास करते हैं,

nohup ./batch.sh > /dev/null & 

अगर मैं सर्वर से बाहर निकलता हूं और आउटपुट फ़ाइल (batch_results.dat) वापस आ जाता हूं तो कोई डेटा नहीं होता है।

मुझे यकीन है कि मुझे यहां कुछ सरल फिक्स या कमांड याद आ रहा है। कोई विचार?

संपादित करें: प्रोग्राम fof.py दो फ़ाइलों का उत्पादन करता है जो mdisk5.py के लिए इनपुट के रूप में उपयोग किए जाते हैं। जब मैं नोहुप चलाने के दौरान सर्वर से बाहर निकलता हूं, तो इन दो फ़ाइलों का उत्पादन होता है, लेकिन केवल पहली इनपुट फ़ाइल '0010.dat' के लिए। आउटपुट फाइल batch0.dat और batch_results.dat खाली रहती है। !

#/bin/श

sh सरणियों का समर्थन नहीं करता:

+0

में अपने डेटा फ़ाइलों की एक सामान्य, व्हाइटस्पेस से अलग स्ट्रिंग का उपयोग '>/dev/null' बाहर ले देखने के लिए अगर कोई उपयोगी जानकारी मुद्रित है? साथ ही, क्या कोई आउटपुट किसी फ़ाइल को 'nohup.txt' या इसी तरह में नहीं डालता है? सौभाग्य। – shellter

+0

मुझे कार्य निर्देशिका में nohup.txt फ़ाइल नहीं मिल रही है। क्या यह एक अलग डिफ़ॉल्ट निर्देशिका में जाता है? – ricitron

+0

नोहप प्रलेखन मैंने अभी गुगल किया है कि यह या तो वर्तमान डीआईआर या $ HOME है। अपने सिस्टम के लिए विशिष्टताओं को देखने के लिए कमांड लाइन 'मैन नोहुप' पर इसे आज़माएं। सौभाग्य। – shellter

उत्तर

1

यहाँ अपने समस्या है। या तो bash की तरह, एक खोल कि समर्थन सरणियों करता आह्वान करने के लिए अपने कुटिया लाइन बदलने के लिए, या एक तरह

DAT_FILES="0010.dat 0020.dat 0030.dat" 
    for file in $DAT_FILES 
    do 
     ... 
    done 
संबंधित मुद्दे