मैंने विभिन्न स्रोतों के उत्तरों के साथ इसी तरह के विषय के एक पुराने धागे का उत्तर पोस्ट किया । इस धागे के लिए अनुकूलित उत्तर की एक प्रति निम्नलिखित है।
निम्नलिखित कार्य:
$ (gui_app &> /dev/null &)
यह नाथन फ़ेलमैन का उत्तर प्लस पुनर्निर्देशन है।
"&> / dev / null" nd डिवाइस को stdout और stderr दोनों को पुनर्निर्देशित करता है। अंतिम एम्परसैंड पृष्ठभूमि में प्रक्रिया को चलाता है। कमांड के चारों ओर के कोष्ठक आपके "gui_app" को सबस्क्रिप्शन में चलाने का कारण बनेंगे।
ऐसा करने से आप इस कमांड को निष्पादित करने वाले कंसोल से "gui_app" प्रक्रिया को अलग कर देंगे। तो भले ही आप विंडो पेरेंट टर्मिनल एमुलेटर बंद कर रहे हों, "gui_app" बंद नहीं होगा। मैंने इसे चलाया और फिर "प्रीट्री" कमांड के साथ प्रोसेस ट्री को देखा और पाया कि इस तरह से "इनिट" के लिए चाइल्ड प्रोसेस बन जाएगा।
उदाहरण के लिए,
$ gui_app &> /dev/null &
एप्लिकेशन को पृष्ठभूमि में चलाएगा, लेकिन यह कंसोल प्रक्रिया का एक चाइल्ड प्रोसेस बन जाएगा और टर्मिनल बंद करने पर समाप्त हो जाएगा। (हालांकि बाहर निकलने के आदेश या Ctrl-D का उपयोग करके बश के माध्यम से टर्मिनल से बाहर निकलें, बैकग्राउंड प्रोसेस को init में सौंपने से बैश को साफ कर देगा।)
"nohup" काम करता है क्योंकि NawaMan ने सुझाव दिया है, लेकिन यह डिफ़ॉल्ट रूप से फ़ाइल में आउटपुट और त्रुटि को पुनर्निर्देशित करता है। जैसा कि जेफ़जी ने उत्तर दिया है, "डिसऑन" कमांड (यदि शेल में उपलब्ध है) एक बैकग्राउंड प्रक्रिया शुरू करने के बाद टर्मिनल से प्रक्रिया को अलग कर सकता है:
$ gui_app &
$ disown
(यह सब bash पर लागू होता है। मुझे यकीन है कि अन्य गोले में ऐसा करने के लिए अन्य तरीके / वाक्यविन्यास हैं।)
कुछ संदर्भ:
डिसइंगिंग प्रोसेस (यूनिक्स पावर टूल्स)
यदि यह GUI अनुप्रयोग के लिए एक सरल कॉल है - बिना जटिल विकल्पों के और ऐसे - यह "gmrun" या dmenu (चेतावनी: लाउड ऑडियो) जैसे लॉन्चर का उपयोग करना भी एक अच्छा विकल्प है। इसे एक प्रमुख संयोजन से बांधें। मैं अभी तक एक लांचर का उपयोग नहीं करते हैं, लेकिन उन दोनों की कोशिश की है।
ध्यान दें: अन्य थ्रेड रिपोर्ट्स के GUI ऐप्स "gui_app &" विधि के माध्यम से शुरू की गई टिप्पणी में CarlF तब बंद होता है जब वह मूल टर्मिनल से बाहर निकलता है। मुझे लगता है कि हम टर्मिनल को अलग-अलग तरीकों से बंद कर रहे थे। मैं उस विंडो को बंद कर रहा था जिसमें टर्मिनल एमुलेटर चल रहा था। मुझे लगता है कि वह शेल (एक्जिट कमांड या Ctrl-D) के माध्यम से टर्मिनल एमुलेटर से बाहर निकल रहा होगा। मैंने यह परीक्षण किया और देखा कि बैश के माध्यम से बाहर निकलना जीयूआई को बंद नहीं करता है क्योंकि टर्मिनल की पृष्ठभूमि प्रक्रिया के रूप में कार्लएफ कहते हैं। ऐसा लगता है कि जब इसे साफ करने का मौका दिया गया, तो यह इनिट में बैकग्राउंड प्रोसेस से हाथ धोता है। वास्तव में, यह वह तंत्र होना चाहिए जिसके द्वारा एक उपधारा में शुरू की गई पृष्ठभूमि प्रक्रिया init को सौंप दी जाती है।