यह मार्गदर्शिका आपको दिखाएगी कि पृष्ठभूमि में प्रक्रियाओं को चलाने के लिए 'नोहप' कमांड का उपयोग कैसे किया जाता है, ताकि आपके लॉग आउट होने या डिस्कनेक्ट होने पर भी वे चलते रहें।
मैं रिमोट सर्वर पर बहुत काम करता हूं। मैं अपने सर्वर से कनेक्ट करने के लिए SSH का उपयोग करता हूं। अक्सर मैं एक प्रक्रिया चलाता हूं जिसे मुझे अपना SSH कनेक्शन बंद करने के बाद भी चलने देना होता है। यह एक शेल स्क्रिप्ट हो सकती है जो मेरी लॉग फ़ाइलों या बहुत बड़ी MySQL डेटाबेस बहाली के माध्यम से पार्स करती है। जब मैं "नोहप" नामक एक लिनक्स कमांड लाइन उपयोगिता की ओर मुड़ता हूं। "नोहप" "नो हैंगअप" के लिए छोटा है, जिसका अनुवाद "हैंग अप सिग्नल को अनदेखा करना" है। जब आप लॉग आउट करते हैं तो "हैंग अप" सिग्नल होता है। "नोहप" क्या करता है कि यह आपको अपने सर्वर में लॉग इन करने, एक प्रक्रिया शुरू करने और लॉग आउट करने की अनुमति देता है। आपके लॉग आउट होने के बाद भी यह प्रक्रिया चलती रहती है। जब आप दोबारा लॉग इन करते हैं तो आप उस प्रक्रिया को फिर से एक्सेस कर सकते हैं, बशर्ते यह अभी भी चल रही हो।
“नोहप” का मूल सिंटैक्स है:
# नोहप [कमांड] और
"[कमांड]" को अपनी शेल स्क्रिप्ट या कमांड के नाम से बदलें। अंत में "&" कमांड या स्क्रिप्ट को पृष्ठभूमि प्रक्रिया के रूप में चलाता है। यहां एक उदाहरण दिया गया है कि आप अपने दूरस्थ सर्वर पर एक बड़े mysql डेटाबेस का बैकअप लेने के लिए "नोहप" का उपयोग कैसे करेंगे। सबसे पहले, मैं SSH का उपयोग करके अपने रिमोट सर्वर में लॉग इन करता हूं:
# ssh [email protected]
फिर मैं कमांड "mysqldump -ucalvin -phobbes bigdatabase> bigdatabase.db" को "nohup" मोड में पहले "nohup" और कमांड के बाद "&" जोड़कर निष्पादित करता हूं:
# nohup mysqldump -ucalvin -phobbes bigdatabase> bigdatabase.db &
[1] 3999
# nohup:आउटपुट को `nohup.out' में जोड़ना
आउटपुट की दो लाइनें हैं जो आपको मिलती हैं। पहली पंक्ति में "3999" उस प्रक्रिया की प्रक्रिया आईडी है जिसे मैंने अभी-अभी बनाया है, जबकि "नोहप:'नोहप.आउट' में आउटपुट जोड़ना" का अर्थ है कि आमतौर पर टर्मिनल पर आने वाले आउट पुट को अग्रेषित किया जा रहा है। निर्देशिका में "nohup.out" नामक एक फ़ाइल जिसमें से आपने कमांड लॉन्च किया था। आप प्रक्रिया आईडी का उपयोग करके सभी चल रही प्रक्रियाओं के माध्यम से खोज कर जांच सकते हैं कि प्रक्रिया अभी भी चल रही है या नहीं:
# ps -ef | ग्रेप 3999
केल्विन 3999 29848 0 18:42? 00:00:00 /usr/bin/mysqldump
केल्विन 6575 31852 0 18:44 अंक/2 00:00:00 grep 3999
जब प्रक्रिया पूरी हो जाती है, तो आप कमांड लाइन में इस तरह एक आउटपुट देखेंगे:
[1]+ हो गया mysqldump -ucalvin -phobbes bigdatabase> bigdatabase.db
आप किसी भी त्रुटि या अन्य संदेशों की जांच करने के लिए फ़ाइल "nohup.out" की जांच कर सकते हैं जो प्रक्रिया के चलने के दौरान आउटपुट थे। अगर फ़ाइल खाली रहती है तो ठीक है। इसका मतलब है कि जब प्रक्रिया चल रही थी तब कोई संदेश आउटपुट नहीं था।
अब जब आप जानते हैं कि पृष्ठभूमि में प्रक्रियाओं को कैसे चलाना है, तो क्यों न कुछ अन्य linux युक्तियाँ और तरकीबें सीखें?