बैश स्क्रिप्ट का उपयोग करके सब्सक्रिप्शन को उचित रूप से चलाने का तरीका जानें

बैकग्राउंड में समानांतर में चलाने के लिए सब्सल्स को कैसे प्रबंधित करें

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

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

सबशेल कैसे बनाएं

बैश खोल स्क्रिप्ट में, आप कोष्ठक नोटेशन का उपयोग करके एक सबहेल बनाते हैं:

#! / bin / bash echo "subshell शुरू करने से पहले" (गिनती = 1 जबकि [$ count -le 99] गूंज करें "$ count" नींद 1 ((गिनती ++)) किया गया) गूंज "समाप्त"

उदाहरण में, जबकि लूप कोष्ठक में संलग्न किया गया है, जिसके कारण इसे खोल के सबहेल में निष्पादित किया जाता है जिसमें स्क्रिप्ट फ़ाइल निष्पादित की जाती है।

पृष्ठभूमि में एक सबहेल चल रहा है

जब तक आप निर्दिष्ट नहीं करते कि पृष्ठभूमि में सबहेल निष्पादित किया जाना है, तो मूल शैल शेष स्क्रिप्ट के साथ जारी रखने से पहले समाप्त होने के लिए सबहेल के लिए प्रतीक्षा करता है। हालांकि, यदि आप समानांतर में सबशेल्स को चलाने के लिए चाहते हैं, तो आप उन्हें पृष्ठभूमि में चलाते हैं, जो सबहेल अभिव्यक्ति के बाद एम्पर्सेंड वर्ण के साथ पूरा किया जाता है, जैसा कि यहां दिखाया गया है:

#! / bin / bash echo "subshell शुरू करने से पहले" (गिनती = 1 जबकि [$ count -le 99] गूंज करें "$ count" नींद 1 ((गिनती ++)) किया गया है और "समाप्त" गूंजें

समांतर में एकाधिक सब्सक्रिप्शन चलाना

यदि आप पृष्ठभूमि प्रक्रियाओं के रूप में एकाधिक सबहेल बनाते हैं , तो आप समानांतर में कार्य चला सकते हैं। आम तौर पर, ऑपरेटिंग सिस्टम प्रत्येक प्रक्रिया और उपप्रोसेस के लिए विभिन्न प्रोसेसर या कोर का उपयोग करता है, मानते हैं कि प्रक्रियाओं के रूप में कम से कम प्रोसेसर या कोर हैं। अन्यथा, कार्य एक ही प्रोसेसर या कोर को सौंपा जाता है। उस स्थिति में, जब तक कार्य पूरा नहीं हो जाता है, प्रोसेसर या कोर निरंतर कार्यों के बीच स्विच करता है। अगले उदाहरण में दो उपप्रमुख हैं। पहला व्यक्ति 1 से 99 तक गिना जाता है, और दूसरा 1000 से 10 99 तक होता है।

#! / bin / bash echo "subshell शुरू करने से पहले" (गिनती = 1 जबकि [$ count -le 99] गूंज करें "$ गिनती" नींद 1 ((गिनती ++))) और (गिनती = 1000 जबकि [$ count -le 10 99] गूंज करें "$ गिनती" नींद 1 ((गिनती ++)) किया गया) और "समाप्त" गूंजें

शेष स्क्रिप्ट के साथ आगे बढ़ने से पहले उपप्रोसेस को समाप्त करने के लिए पैरेंट प्रक्रिया को बताने के लिए प्रतीक्षा कथन का उपयोग करें:

#! / bin / bash echo "subshell शुरू करने से पहले" (गिनती = 1 जबकि [$ count -le 99] गूंज करें "$ गिनती" नींद 1 ((गिनती ++))) और (गिनती = 1000 जबकि [$ count -le 10 99] गूंज करें "$ गिनती" नींद 1 ((गिनती ++)) किया गया है और गूंजें "समाप्त"

सब्सक्रिप्शन के लिए उपयोग करता है

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

सब्सक्रिप्शन को फ़ंक्शन परिभाषाओं में उपयोग किया जा सकता है ताकि उन्हें विभिन्न मानकों के साथ कई बार निष्पादित किया जा सके।