अपने टर्मिनल में एक कमांड चलाने और उसके मिनटों, कभी-कभी घंटों तक चलने और अपने टर्मिनल का फिर से उपयोग न कर पाने से ज्यादा कष्टप्रद कुछ नहीं है। निश्चित रूप से, आप टैब का उपयोग कर सकते हैं, लेकिन वह एक अनाड़ी समाधान है, और यह हमेशा इष्टतम नहीं होता क्योंकि आप अपडेट देखना चाह सकते हैं जब आप काम कर रहे हों। यहां हम आपको Linux में bash कमांड को बैकग्राउंड में चलाने के कुछ अलग तरीके दिखाते हैं।
कमांड के अंत में & जोड़ें
यदि आप किसी कमांड को बैकग्राउंड में धकेलना चाहते हैं, तो अंत में & का उपयोग करना एक आसान तरीका है। इस तरह, आप बैकग्राउंड में एक कमांड जारी कर सकते हैं और जैसे ही यह चलता है अपने टर्मिनल का उपयोग जारी रख सकते हैं। इसमें एक पकड़ है, हालांकि। & का उपयोग कमांड को आपसे डिस्कनेक्ट नहीं करता; यह सिर्फ इसे बैकग्राउंड में धकेलता है। इसका मतलब है कि जब आप टर्मिनल का उपयोग करने का प्रयास कर रहे हों, तो कमांड जो भी STDOUT या STDERR पर प्रिंट करना चाहता है, वह अभी भी प्रिंट होगा, जो ध्यान भटका सकता है।
COMMAND &
जब टर्मिनल सत्र बंद होता है, तो कमांड समाप्त हो जाता है। आप jobs कमांड जारी करके, चल रहे कमांड की संख्या ढूंढकर, और kill कमांड से इसे मारकर भी कमांड को मार सकते हैं। वह सिंटैक्स इस प्रकार है:
kill %1
यदि आपको कुछ समय के लिए कुछ धकेलने की आवश्यकता है लेकिन आप इसे हमेशा के लिए जारी रहने की उम्मीद नहीं करते हैं तो & का उपयोग करना अच्छा है।
कमांड के बाद &, फिर इसे डिसओन करें
सिर्फ & के साथ कमांड चलाने से यह पीछे धकेलता है और इसे तब तक चलाता रहता है जब तक टर्मिनल विंडो खुली है। यदि, हालांकि, आप इसे लगातार चलते रखना चाहते हैं, यहां तक कि आपके टर्मिनल सत्र के समाप्त होने के बाद भी, तो आप disown कमांड का उपयोग कर सकते हैं।
इस विधि का उपयोग करने के लिए, एक & जोड़कर शुरू करें।
COMMAND &
जैसा कि ऊपर उल्लेख किया गया है, & का उपयोग इस कमांड को बैकग्राउंड में धकेलता है लेकिन इसे आपके उपयोगकर्ता से डिटैच नहीं करता। आप टर्मिनल में jobs टाइप करके इसे सत्यापित कर सकते हैं। यह पहले की तरह बैकग्राउंड में चल रहे कमांड को दिखाएगा।
बस शेल में disown टाइप करें, और यह वही करेगा। (और आप एक बार फिर jobs कमांड से इसे सत्यापित कर सकते हैं।)
अब आप अपना टर्मिनल बंद कर सकते हैं और अपने दिन के काम जारी रख सकते हैं। यह अभी भी STDOUT या STDERR पर चीजों को पाइप करता रहेगा, लेकिन एक बार जब आप बाहर निकलते हैं और अपना टर्मिनल फिर से खोलते हैं, तो आप वहां कुछ भी नहीं देखेंगे। आप top या ps कमांड से फिर से कमांड ढूंढ सकते हैं और kill कमांड से इसे मार सकते हैं।
कमांड के बाद & /dev/null के साथ
कमांड के बाद & जोड़ने से कमांड बैकग्राउंड में चला जाएगा, लेकिन परिणामस्वरूप, बैकग्राउंड कमांड आपके इसका उपयोग करते समय टर्मिनल में संदेश प्रिंट करना जारी रखेगा। यदि आप इसे रोकना चाहते हैं, तो कमांड को /dev/null पर रीडायरेक्ट करने पर विचार करें।
COMMAND &>/dev/null &
यह टर्मिनल बंद होने पर कमांड को बंद होने से नहीं रोकता। हालांकि, जैसा कि ऊपर उल्लेख किया गया है, चल रहे कमांड को उपयोगकर्ता से डिसओन करने के लिए disown का उपयोग करना संभव है। यदि आप नहीं चाहते कि यह अब और चले तो आप ऊपर बताए गए किसी भी तरीके से इसे मार सकते हैं।
Nohup, & और /dev/null के साथ
पिछले कमांड के विपरीत, nohup का उपयोग आपको कमांड को बैकग्राउंड में चलाने और इसे चालू रखने की अनुमति देता है। कैसे? nohup HUP सिग्नल (सिग्नल हैंग अप) को बायपास करता है, जिससे टर्मिनल बंद होने पर भी कमांड को बैकग्राउंड में चलाना संभव हो जाता है। इस कमांड को रीडायरेक्शन के साथ "/dev/null" (ताकि nohup nohup.out फ़ाइल न बनाए) के साथ संयोजित करें, और सब कुछ एक कमांड के साथ बैकग्राउंड में चला जाता है।
nohup COMMAND &>/dev/null &
आज Linux पर अधिकांश टर्मिनल प्रोग्राम में उन्हें कम प्रयास के साथ बैकग्राउंड में चलाने के लिए बिल्ट-इन सुविधाएं हैं। इसके साथ, आधुनिक इनिट सिस्टम (जैसे systemd) उपयोगकर्ताओं को बूट पर या जब भी सेवाओं की तरह प्रोग्राम शुरू करने की अनुमति दे सकते हैं।
फिर भी, Linux पर कुछ प्रोग्राम डेमॉन के रूप में चलने या आधुनिक इनिट सिस्टम के साथ इंटीग्रेट करने की क्षमता की कमी रखते हैं। यह एक वास्तविक असुविधा है लेकिन समझ में आता है, क्योंकि सभी डेवलपर्स के पास नई सुविधाएं जोड़ने का कौशल या समय नहीं होता।
सौभाग्य से, nohup या disown जैसे कमांड अभी भी वास्तविकता हैं और इस तरह के प्रोग्राम को बैकग्राउंड में ले जाने में अंतर को भर सकते हैं। वे परफेक्ट या फैंसी नहीं हैं, लेकिन जब जरूरत होती है तो काम पूरा कर देते हैं।
यदि आपको यह Linux लेख पसंद आया, तो हमारी अन्य Linux सामग्री देखना सुनिश्चित करें, जैसे Google अकाउंट को GNOME Shell से कैसे कनेक्ट करें, Windows उपयोगकर्ताओं के लिए सर्वश्रेष्ठ Linux डिस्ट्रोस, और LS कमांड जो आपको जानने की जरूरत है।