जब आप Linux में कमांड चलाते हैं तो क्या होता है?

अधिकांश लिनक्स उपयोगकर्ता अक्सर ऑपरेटिंग सिस्टम के आंतरिक कामकाज से अनजान होते हैं। आप लंबे समय से शेल पर लिनक्स कमांड चला रहे होंगे, लेकिन क्या आपने कभी सोचा है कि जब आप एंटर दबाते हैं तो पर्दे के पीछे क्या होता है?

अंत तक, आपको इस बात की संक्षिप्त समझ होगी कि शेल लिनक्स में टाइप किए गए कमांड को कैसे प्रोसेस करता है।

कमांड को संसाधित करना

जब आप एक कमांड दर्ज करते हैं, तो शेल सबसे पहले पूरे कमांड को "टोकन" में तोड़ देता है। शेल तब कमांड लाइन में पहले टोकन से संबंधित प्रोग्राम नाम की तलाश करेगा।

यदि यह $PATH पर्यावरण चर में परिभाषित खोज पथ में किसी भी निर्देशिका में या . ऑपरेटर के साथ स्थानीय निर्देशिका में नहीं मिलता है, या यह शेल उपनाम या शेल फ़ंक्शन नहीं है, तो शेल एक त्रुटि देगा . यदि यह एक वैध कमांड पाता है, तो शेल अन्य टोकन में से प्रत्येक के माध्यम से जाएगा और तय करेगा कि यह एक चर, एक शेल पैरामीटर या कमांड के लिए एक तर्क है।

यदि शेल यह निर्धारित करता है कि यह होम निर्देशिका के लिए ~ ऑपरेटर जैसा एक चर या पैरामीटर है, तो शेल उनका विस्तार करेगा, या उन्हें कमांड में उनके मूल मानों से बदल देगा।

जब शेल ने किसी भी पैरामीटर या चर का विस्तार किया है, तो यह कमांड स्ट्रिंग के साथ कमांड को चलाएगा, प्रोग्राम को इसके तर्कों के साथ चलाएगा। शेल यह निर्धारित नहीं करता है कि कोई तर्क मान्य है या नहीं। यह कमांड का काम है।

कमांड चलाना

जब शेल एक और कमांड लॉन्च करता है, तो यह उसी प्रॉम्प्ट पर वापस कैसे आता है जिसका आप पहले इस्तेमाल कर रहे थे? शेल स्वयं की एक प्रति बनाता है, एक प्रक्रिया जिसे फोर्किंग कहा जाता है। शेल की यह प्रति पहले से संसाधित किए गए सभी तर्कों के साथ स्वयं को कमांड से बदल देती है। इसे "निष्पादन" के रूप में जाना जाता है और संयुक्त प्रक्रिया को "कांटा-और-निष्पादन" के रूप में जाना जाता है।

उदाहरण के लिए, जब आप ls कमांड चलाते हैं, तो शेल प्रक्रिया फोर्क () विधि का उपयोग करके खुद को फोर्क कर लेगी और एक और शेल इंस्टेंस बनाएगी। सिस्टम पर चलने वाली दो शेल प्रक्रियाओं में से, अतिरिक्त शेल ls को ls कमांड के इंस्टेंस में बदलते हुए, exec () फ़ंक्शन का उपयोग करके निष्पादित करेगा।

इस बीच, मूल शेल कमांड के पूरा होने की प्रतीक्षा करता है। यही कारण है कि आप जॉब कंट्रोल का उपयोग जॉब को निलंबित करने और शेल में बैकग्राउंड में जॉब चलाने के लिए कर सकते हैं।

संबंधित: लिनक्स में एक प्रक्रिया क्या है?

निकास स्थिति की रिपोर्ट करना

Linux कमांड रिपोर्ट करता है कि वे अपनी निकास स्थिति के माध्यम से सफलतापूर्वक चले या नहीं। जैसा कि नाम से पता चलता है, प्रोग्राम चलने के बाद उनकी निकास स्थिति की रिपोर्ट करते हैं। वे $ के माध्यम से ऐसा करते हैं ? पर्यावरण चर, जिसमें अंतिम रन कमांड की निकास स्थिति होती है।

परंपरा के अनुसार, 0 की निकास स्थिति एक सफल निष्पादन को इंगित करती है, जबकि 0 के अलावा कुछ भी आमतौर पर एक त्रुटि का मतलब है। आपका शेल कमांड लाइन पर एक गैर-शून्य निकास स्थिति का संकेत भी दे सकता है जो इस बात पर निर्भर करता है कि आपका प्रॉम्प्ट कैसे कॉन्फ़िगर किया गया है।

उपरोक्त स्क्रीनशॉट एक उदाहरण है जो एक अनुकूलित Zsh प्रॉम्प्ट दिखा रहा है जो एक कमांड के कारण 127 की त्रुटि निकास स्थिति दिखाता है जो मौजूद नहीं है।

अब आप जानते हैं कि लिनक्स कमांड कैसे काम करता है

अब जब आप इस बात से अवगत हैं कि लिनक्स शेल एक कमांड को कैसे प्रोसेस करता है, फोर्क करता है और खुद को निष्पादित करता है, और प्रोग्राम कैसे उनकी निकास स्थिति की रिपोर्ट करते हैं, तो आप कमांड लाइन का अधिक प्रभावी ढंग से उपयोग कर सकते हैं।

उपयोगकर्ताओं के लिए कई लिनक्स शेल मुफ्त में उपलब्ध हैं। जबकि उनमें से प्रत्येक कमोबेश एक ही काम करता है, वे कई पहलुओं में भिन्न होते हैं। आप अपने सिस्टम पर कुछ गोले स्थापित करने का प्रयास कर सकते हैं और अपने लिए तय कर सकते हैं कि कौन सा आपको सबसे अच्छा लगता है।