इस प्रश्न के अनुवर्ती के रूप में , मैं जानना चाहूंगा कि मैंने जिस कार्यक्रम को चलाया disown -h
है, उसके STDOUT और STDERR को कहां पर पुनर्निर्देशित किया गया है।
इस प्रश्न के अनुवर्ती के रूप में , मैं जानना चाहूंगा कि मैंने जिस कार्यक्रम को चलाया disown -h
है, उसके STDOUT और STDERR को कहां पर पुनर्निर्देशित किया गया है।
जवाबों:
disown
कार्यक्रम STDOUT / ERR नहीं बदलता है। वे अभी भी जहाँ भी आप उन्हें (उपयोग >
आदि) पुनर्निर्देशित करेंगे । यदि आपने उन्हें रीडायरेक्ट नहीं किया है, तो वे उस टर्मिनल में जाना जारी रखेंगे, जिस प्रोग्राम को आपने शुरू किया था (जब तक आप उस टर्मिनल को बंद नहीं करते हैं, जिस स्थिति में उन्हें छोड़ दिया जाएगा)।
वर्णन करने के लिए, इसे एक टर्मिनल में चलाएं:
bash -c 'while true; do sleep 1; echo hi; done' &
यह हर सेकंड "हाय" प्रिंट करेगा (और आपको बहुत गुस्सा दिलाएगा; ;-))। यदि आप disown
शुरू करने के बाद कार्यक्रम करते हैं, तो "हाय" बस जारी रहेगा। आपको शेल के पीआईडी (उदाहरण पीएस का उपयोग करके) को खोजने और इसे रोकने के लिए इसे मारने की आवश्यकता है।
संपादित करें:
टिप्पणियों के आधार पर, हो सकता है कि आप वास्तव में क्या करना चाहते हैं, प्रोग्राम के आउटपुट को पुनर्प्राप्त करने के बाद आप disown
इसे संपादित करें और टर्मिनल को बंद कर रहे थे। यह इस प्रश्न में समझाया गया है: tcsh के साथ दूरस्थ nohup के बाद ( धन्यवाद quixote करने के लिए)।