Skip to main content

باش Subshells والمعالجة المتوازية

الدرس الثاني في تعليم السياقة_ كيفية تشغيل السيارة و ما دور الواصل (لومبرياج) في الاقلاع (قد 2025)

الدرس الثاني في تعليم السياقة_ كيفية تشغيل السيارة و ما دور الواصل (لومبرياج) في الاقلاع (قد 2025)
Anonim

يعد 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 في تعريفات الدالة بحيث يمكن تنفيذها عدة مرات باستخدام معلمات مختلفة.