जवाबों:
यह nohup
आपको वही बता रहा है जो इसे स्थापित किया गया है; यह इसकी मानक त्रुटि के लिए आउटपुट करता है, जिसे आपने रीडायरेक्ट किया है nohup.err
। आप इसके मानक इनपुट को पुनर्निर्देशित करके संदेश से बच सकते हैं:
nohup bash life.bash > nohup.out 2> nohup.err < /dev/null &
nohup
एक टर्मिनल से जुड़े हैं, जो देखने के लिए अपने मानक इनपुट, मानक उत्पादन और मानक त्रुटि की जाँच करता है; अगर यह किसी भी तरह से जुड़ा हुआ है, तो यह उन्हें उपयुक्त के रूप में संभालता है (इनपुट को अनदेखा करता है, आउटपुट को रीडायरेक्ट करता है nohup.out
, त्रुटि को मानक आउटपुट पर पुनर्निर्देशित करता है), और आपको बताता है कि यह क्या किया है। अगर उसे कुछ भी नहीं करना है तो उसे डिस्कनेक्ट करने की आवश्यकता है, यह कुछ भी आउटपुट नहीं करता है।
nohup
आपको बता रहा है कि वास्तव में यह क्या कर रहा है, कि यह इनपुट की अनदेखी कर रहा है।
यदि आप इस संदेश से बचना चाहते हैं, तो इस तरह से स्टड पुनर्निर्देशित /dev/null
करें
nohup bash life.bash </dev/null >nohup.out 2>nohup.err &
man nohup
"यदि मानक इनपुट एक टर्मिनल है, तो इसे एक अपठनीय फ़ाइल से पुनर्निर्देशित करें।"
इसलिये,
nohup: ignoring input and appending output to 'nohup.out'
यह वही कर रहा है जो इसे करना है, भले ही विकल्प प्रविष्टियों के बावजूद , इसीलिए इनपुट को छोड़ दिया जा रहा है।
यह भी लगता है कि आप पुनर्निर्देशन का बेमानी उपयोग कर रहे हैं। nohup पहले से ही आपके लिए nohup.out बनाता है और, यदि सभी का काम ठीक है, तो stderr को भी पुनर्निर्देशित किया जाना चाहिए।
चीयर्स!
nohup
;bash life.bash >life.out 2>life.err </dev/null & disown -h "$!"
केवल शेल में निर्मित कार्यक्षमता का उपयोग करके ही ऐसा करता है।