2013-01-03 37 views
8

nohup.out लिए उत्पादन नहीं है मेरे पास है start.sh बैश स्क्रिप्ट चल रही है कि हालांकि क्रॉन ubuntu सर्वर पर कामक्रॉन जॉब

कोड

की start.sh bellow उल्लेख होता है लाइनों

start.sh की राह /home/ubuntu/folder1/folder2/start.sh

#!/bin/bash 

crawlers(){ 
    nohup scrapy crawl first & 
    nohup scrapy crawl 2nd & 
    wait $! 
    nohup scrapy crawl 3rd & 
    nohup scrapy crawl 4th & 
    wait 
} 

cd /home/ubuntu/folder1/folder2/ 
PATH=$PATH:/usr/local/bin 
export PATH 

python init.py & 
wait $! 
crawlers 
python final.py 

मेरी है मुकदमा है अगर मैं कमांड लाइन पर start.sh मेरे अपने आप को चलाने यह आउटपुट में nohup.out फ़ाइल

लेकिन जब यह cronjob के माध्यम से इस बैश फ़ाइल निष्पादित करता है (हालांकि स्क्रिप्ट ठीक चल रहे हैं) ने अपने नहीं

nohup.out उत्पादन मैं nohup.out में इस cronjob की उत्पादन कैसे मिल सकता है?

+1

कैसे/जहाँ आप इस nohup.out फ़ाइल बना रहे? याद रखें कि क्रॉन नौकरियों 'डिफ़ॉल्ट कार्यशील निर्देशिका उपयोगकर्ता ID वे कर रहे हैं के तहत चलाया जा रहा की homedirectory है। आप इस फ़ाइल के लिए संबंधित पथ का उपयोग कर रहे हैं, तो आप .. खाते के होम निर्देशिका, नहीं अपने खुद के खोल वर्तमान निर्देशिका –

+0

@MarcB मैं लिनक्स पर noob हूँ के सापेक्ष हो जाएगा प्रत्येक पंक्ति nohup जैसे nohup scrapy में उत्पादन जोड़कर है क्रॉल 3 और मैं crontab में यह जोड़ा 40 10 * * * /home/ubuntu/folder1/folder2/start.sh –

+1

FYI करें: निर्माण 'अजगर init.py और इंतजार $' (दो लाइनों पर फैला) व्यर्थ है; '&' ड्रॉप करें और 'प्रतीक्षा करें' को हटा दें। यह आपकी समस्या में एक कारक नहीं है; यह लिखित के रूप में भी काम करता है। लेकिन यह व्यर्थ है। –

उत्तर

14

आप nohup क्यों प्रयोग कर रहे हैं? nohup एक आदेश है कि hangup संकेत की अनदेखी करने के चल टर्मिनल बताता है। cron, तथापि, कोई hangup संकेत है, क्योंकि यह एक टर्मिनल सत्र से लिंक नहीं है है।

इस मामले में, के बजाय:

nohup scrapy crawl first & 

आप शायद चाहते हैं:

scrapy crawl first > first.txt & 

पिछले उदाहरण भी एक टर्मिनल में काम करता है, लेकिन जब आप टर्मिनल, hangup संकेत बंद (hup) भेजा जाता है, जो कार्यक्रम समाप्त होता है।

संबंधित मुद्दे