يعد shell واجهة أساسية لإدخال الأوامر على نظام Linux. مع ذلك ، يمكنك إدخال أمر مباشرة أو تحديد ملف (نصي) يحتوي على سلسلة من الأوامر ليتم تنفيذها. يتم تنظيم الأصداف في تسلسل هرمي ، ويمكن لأي قذيفة إنشاء غلاف جديد. تعتبر shell الجديدة عملية تابعة - وهي عبارة عن شريحة فرعية - من shell الأصل الذي يقوم بإنشائها.
بشكل افتراضي ، يعتمد subshell على الأصل الخاص به بمعنى أنه في حالة إنهاء العملية الأصل ، سينتهي الجزء الفرعي أيضًا. يتم تمرير أي إخراج من subshell إلى shell الأصل.
كيفية إنشاء Subshell
في برنامج نصي Bash shell ، يمكنك إنشاء نموذج فرعي باستخدام تدوين الأقواس:
في المثال ، يتم تضمين حلقة while في أقواس ، مما يؤدي إلى تنفيذها في subshell من shell حيث يتم تنفيذ ملف البرنامج النصي.
تشغيل Subshell في الخلفية
ما لم تحدد أن subshell سيتم تنفيذه في الخلفية ، ينتظر shell الأصل لاستكمال subshell قبل المتابعة مع باقي البرنامج النصي. ومع ذلك ، إذا كنت ترغب في تشغيل subshells بالتوازي ، يمكنك تشغيلها في الخلفية ، والتي يتم إنجازها باستخدام حرف علامة الضم بعد تعبير subshell ، كما هو موضح هنا:
تشغيل Subshells متعددة في الموازي
إذا كنت تقوم بإنشاء عدة أحرف فرعية كعمليات خلفية ، فيمكنك تشغيل المهام بشكل متوازٍ. نموذجياً ، يستخدم نظام التشغيل معالجات أو نوى مختلفة لكل عملية وعمليات فرعية ، بافتراض وجود ما لا يقل عن العديد من المعالجات أو النوى حيث توجد عمليات. خلاف ذلك ، يتم تعيين المهام إلى نفس المعالجات أو النوى. في هذه الحالة ، يقوم المعالج أو النواة بالتبديل المستمر بين المهام المعينة حتى يتم الانتهاء من المهام. المثال التالي يحتوي على اثنين من subprocesses. الأولى من 1 إلى 99 ، والثانية من 1000 إلى 1099.
استخدم العبارة الانتظار لإخبار العملية الأصل انتظار انتهاء العمليات الفرعية قبل المتابعة مع بقية البرنامج النصي:
يستخدم ل Subshells
تعتبر Subshells مفيدة عند الحاجة إلى تنفيذ الأوامر في بيئة أو دليل معين. إذا تم تنفيذ كل أمر في سلسلة فرعية مختلفة ، فلا يوجد خطر من اختلاط إعدادات المتغير. عند الانتهاء ، لا يلزم استعادة الإعدادات والدليل الحالي ، نظرًا لأن بيئة العملية الرئيسية لا تتأثر بأي من عملياتها الفرعية.
يمكن استخدام Subshells في تعريفات الدالة بحيث يمكن تنفيذها عدة مرات باستخدام معلمات مختلفة.