Tl, डॉ:
sleep
जब मैं लॉग आउट करता हूं और टर्मिनल बंद रहता है तो प्रक्रिया क्यों बच सकती है? मेरे दिमाग में, डेमॉन और nohup
कार्यक्रमों को छोड़कर सब कुछ लॉगआउट के दौरान मारा जाएगा। अगर sleep
इस तरह से बच सकते हैं, तो क्या इसका मतलब यह है कि मैं इस पद्धति का उपयोग nohup
कमांड के बजाय कर सकता हूं ?
जब तक bash
उदाहरण के द्वारा पैदा की ssh
है huponexit
विकल्प सेट, कोई प्रक्रिया बाहर निकलने पर किसी भी मतलब द्वारा समाप्त किया जाएगा / लॉग आउट करें और जब huponexit
विकल्प सेट किया गया है, का उपयोग कर kill -9
खोल पर उपयोग करने के लिए एक अच्छा विकल्प नहीं है nohup
खोल के बच्चे की प्रक्रिया पर; nohup
शेल के बच्चे की प्रक्रिया अभी भी उन्हें शेल से नहीं आने वाले SUPUP से सुरक्षित रखेगी, और तब भी जब यह महत्वपूर्ण नहीं nohup
है तब भी इसे पसंद नहीं किया जाएगा क्योंकि यह शेल को शान से समाप्त करने की अनुमति देता है।
इसमें bash
एक विकल्प होता है huponexit
, जिसे यदि सेट bash
आउट / लॉगआउट पर अपने बच्चों को SITEUP बना देगा ;
इंटरएक्टिव नॉन-लॉगिन bash
उदाहरणों में, जैसे कि bash
उदाहरण के द्वारा gnome-terminal
, इस विकल्प को अनदेखा किया जाता है; चाहे huponexit
वह सेट हो या bash
परेशान bash
, बाहर निकलने से बच्चे कभी भी बीमार नहीं होंगे ;
इंटरेक्टिव लॉगिन bash
इंस्टेंस में, जैसे कि bash
उदाहरण के द्वारा ssh
, इस विकल्प को अनदेखा नहीं किया जाता है (हालाँकि यह डिफ़ॉल्ट रूप से परेशान है); यदि huponexit
सेट किया गया है, तो bash
बच्चों को bash
बाहर निकलने / लॉगआउट करने से साइटअप हो जाएगा ; यदि कोई परेशान है huponexit
, तो bash
बच्चों के bash
बाहर निकलने / लॉगआउट करने से SIGHUPped नहीं होगा ;
इसलिए सामान्य रूप से एक इंटरेक्टिव लॉगिन bash
उदाहरण से बाहर निकलने / लॉगिंग करने के लिए, जब तक कि huponexit
विकल्प सेट नहीं किया जाता है, शेल को अपने बच्चों को SITEUP नहीं बनायेगा, और एक इंटरैक्टिव गैर-लॉगिन bash
उदाहरण से बाहर निकलने / लॉगिंग करने से शेल अपने बच्चों को SITEUP नहीं बना सकेगा परवाह किए बिना;
हालाँकि, यह इस मामले में अप्रासंगिक है: उपयोग करने kill -9
sleep
की परवाह किए बिना बच जाएगा, क्योंकि इसकी मूल प्रक्रिया ( bash
) को मारने से बाद वाले को पूर्व के लिए कुछ भी करने का मौका नहीं मिलेगा (जैसे, यदि वर्तमान bash
उदाहरण एक लॉगिन bash
उदाहरण था और huponexit
विकल्प सेट किया गया था, इसे SIGHUP करने के लिए)।
अन्य संकेतों के विपरीत इसे जोड़ना (जैसे एक SIGHUP संकेत भेजा जाता है bash
), एक SIGKILL सिग्नल को कभी भी किसी प्रक्रिया की बाल प्रक्रियाओं के लिए प्रचारित नहीं किया जाता है, इसलिए sleep
इसे भी नहीं मारा जाता है;
nohup
SIGHUP संकेतों के लिए एक प्रक्रिया प्रतिरक्षा शुरू करता है, जो कुछ अलग है; यह SIGHUP सिग्नल के रिसेप्शन पर लटकने वाली प्रक्रिया को रोक देगा, जो कि इस bash
मामले में huponexit
विकल्प के सेट होने और शेल से बाहर निकलने की स्थिति में इंटरेक्टिव लॉगिन इंस्टेंस द्वारा प्राप्त किया जा सकता है ; इसलिए तकनीकी रूप से विकल्प के साथ nohup
एक इंटरेक्टिव लॉगिन bash
इंस्टेंस में एक प्रक्रिया शुरू करने के लिए उपयोग करने से huponexit
विकल्प प्रक्रिया को एक साइट सिग्नल के रिसेप्शन पर लटकने से रोक देगा, लेकिन शेल से बाहर निकलने / लॉगिंग करने के बावजूद इसे अलग नहीं करेगा;
सामान्य तौर पर, हालांकि, जब nohup
माता-पिता के खोल से आने वाले सिग्नल संकेतों को रोकने की आवश्यकता होती है , तो चाइल्ड पद्धति पर kill -9
माता-पिता की विधि पर पसंद करने का कोई कारण नहीं है nohup
; इसके बजाय, यह विपरीत होना चाहिए।
kill -9
विधि का उपयोग करते हुए माता-पिता को मारना माता- पिता के लिए शालीनता से बाहर निकलने का मौका नहीं छोड़ता है, जबकि nohup
विधि का उपयोग करके बच्चे को शुरू करना माता-पिता को अन्य संकेतों द्वारा समाप्त करने की अनुमति देता है, जैसे कि SIGHUP (एक उदाहरण बनाने के लिए जो संदर्भ में समझ में आता है एक बच्चे ने उपयोग करना शुरू कर दिया nohup
), जो इसे इनायत से बाहर निकलने की अनुमति देता है।
&
पृष्ठभूमि (डेमन की तरह) के लिए प्रक्रिया को कांटा जाएगा और आप लॉग आउट होने के बाद भी लगातार चल रहे हैं।