Bash स्क्रिप्टचा वापर करून सबसिफेल कसे योग्यरित्या चालवावे ते जाणून घ्या

पार्श्वभूमीमध्ये समांतरमध्ये अनुक्रमांना कसे चालवावे

शेल लिनक्स सिस्टीमवरील कमांड लिहिण्यासाठी आधारभूत इंटरफेस आहे. यासह, आपण एक कमांड थेट प्रविष्ट करू शकता किंवा फाईल (स्क्रिप्ट) निर्दिष्ट करू शकता ज्यात अंमलात आणलेल्या आदेशांचा क्रम असतो. शेल्स एका पदानुक्रमात आयोजित केले जातात, आणि कोणतीही शेल नवीन शेल तयार करू शकतात. नवीन शेलला बाल प्रक्रिया समजली जाते-एक शहेल-मूळ शेल जो ते तयार करतो.

पूर्वनिर्धारितपणे, एक सबहेल त्याच्या मूळ प्रतीवर आधारित आहे, जर मूळ प्रक्रिया संपुष्टात आणली तर, सबशेल्ड देखील बंद करतो. कोणताही उत्पादन सबशेल्ड मधून पालक शेलवर पाठविला जातो.

सबस्केल कसा तयार करावा

Bash शेल स्क्रिप्टमध्ये, आपण कोष्ठक भाषण वापरून एक सबशेम तयार करा:

#! / bin / bash echo "subshell सुरू होण्याआधी" (गणना = 1 तर [$ count -le 99] ने "$ count" स्लीप 1 "((count ++) done echo करा)" समाप्त "

उदाहरणार्थ, while loop कंस सुरू करण्यात आले आहे, ज्यामुळे स्क्रिप्ट फाईल कार्यान्वित झालेली शेलच्या सबशेल्ड मध्ये कार्यान्वित होते.

पार्श्वभूमीत सबस्केल चालवत आहे

जर आपण असे दर्शवले नाही की subshell पार्श्वभूमीत कार्यान्वित होईल, तर मूळ स्क्रिप्टसह सुरू ठेवण्यापूर्वी पालक शेल पूर्ण होण्याची वाट पाहतो. तथापि, जर आपण समांतर subshells चालू करू इच्छित असाल, तर आपण त्यांना बॅकग्राउंडमध्ये चालवता, जो सबशेल्ड एक्स्प्रेशनच्या खालील अँपरसँड कॅरॅक्टरने पूर्ण झाले आहे, जसे की येथे दर्शविल्याप्रमाणे:

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

पॅरलल मल्टीपल सबशेल्स चालविणे

जर आपण बहु-सबेल्स बॅकग्राउंड प्रोसेसेस म्हणून तयार केले, तर तुम्ही कामे समांतर प्रकारे चालवू शकता. सामान्यतः, ऑपरेटिंग सिस्टीम प्रत्येक प्रक्रिया आणि उपप्रक्रियेसाठी वेगवेगळ्या प्रोसेसर किंवा कोर वापरते, अशी गृहित धरते की प्रोसेस प्रमाणेच कमीतकमी प्रोसेसर किंवा कोरे आहेत. अन्यथा, कार्ये एकाच प्रोसेसर किंवा कोरसाठी नियुक्त केली जातात. त्या बाबतीत, कामे पूर्ण होईपर्यंत प्रोसेसर किंवा कोर ने असाइन केलेली कार्ये दरम्यान सतत स्विच करते. पुढील उदाहरणामध्ये दोन उपप्रक्रिया आहेत पहिली व्यक्ती 1 ते 99 पर्यंत गणली जाते आणि दुसरे म्हणजे 1000 ते 10 99.

#! / bin / bash echo "subshell सुरू होण्याआधी" (गणना = 1 तर [$ count -le 99] ने "$ count" स्लीप 1 ((count ++) पूर्ण केले आहे) आणि (गणना = 1000 असताना [$ count -le 10 99] "$ count" स्लीप 1 ("+ count ++) केले" असे प्रतिध्वनी करा) आणि "समाप्त"

उर्वरित स्क्रिप्टसह पुढे जाण्यापूर्वी उपप्रक्रिया समाप्त होण्याची प्रतीक्षा करण्यासाठी पालक प्रक्रियेस सांगा:

#! / bin / bash echo "subshell सुरू होण्याआधी" (गणना = 1 तर [$ count -le 99] ने "$ count" स्लीप 1 ((count ++) पूर्ण केले आहे) आणि (गणना = 1000 असताना [$ count -le 10 99] "$ count" स्लीप 1 ("+ count ++) केले" असे प्रतिध्वनी करा) आणि "समाप्त"

सबशेल्ससाठी वापर

जेव्हा एखादे विशिष्ट पर्यावरण किंवा निर्देशिकेमध्ये आज्ञावलीची अंमलबजावणी करणे आवश्यक असते तेव्हा Subshels उपयुक्त आहेत. जर प्रत्येक कमांड वेगळ्या सेब्सील मध्ये कार्यान्वित झाली तर व्हेरिएबल्सची संमिश्रण होत नाही. पूर्ण झाल्यावर, सेटिंग्ज आणि वर्तमान निर्देशिका पुनर्संचयित करण्याची आवश्यकता नाही, कारण मूळ प्रक्रियेचे वातावरण त्याच्या कोणत्याही उपप्रकासाद्वारे प्रभावित होत नाही.

सबफेलचा वापर फंक्शनच्या परिभाषांमध्ये केला जाऊ शकतो ज्यायोगे त्यांना वेगवेगळ्या पॅरामीटर्ससह अनेक वेळा कार्यान्वित करता येईल.