Skip to main content

فهم قيادة لينكس الأوامر

04 - دورة تعلم نظام اللينكس Linux للمبتدئين - التنقل و التعامل مع الملفات (قد 2025)

04 - دورة تعلم نظام اللينكس Linux للمبتدئين - التنقل و التعامل مع الملفات (قد 2025)
Anonim

فيه هو أصل جميع عمليات Linux. إنها أول عملية تبدأ عند تشغيل جهاز الكمبيوتر ، ويتم تشغيله حتى يتم إيقاف تشغيل النظام. إنه الجد لجميع العمليات الأخرى.

دوره الأساسي هو إنشاء العمليات من برنامج نصي مخزن في الملف / etc / inittab. عادةً ما يقوم هذا الملف بتخزين الإدخالات التي تتسبب في إنشاء تذييل في كل سطر يمكن للمستخدمين تسجيل الدخول إليه. كما أنه يتحكم في العمليات الذاتية التي يتطلبها أي نظام معين.

مستويات التشغيل

ا مستوى التشغيل هو تكوين برنامج للنظام يسمح بتنفيذ مجموعة محددة من العمليات فقط. يتم تعريف العمليات الناتجة عن Init لكل من هذه المستويات في الملف / etc / inittab. يمكن أن يكون Init في واحد من ثمانية runlevels: 0 إلى 6 و S أو s. يتم تغيير مستوى التشغيل من خلال امتلاك مستخدم متميز لـ Telinit ، والذي يرسل إشارات مناسبة إلى Init ، لإخباره بمستوى التشغيل المطلوب تغييره.

يتم حجز Runlevels 0 و 1 و 6. يستخدم Runlevel 0 لوقف النظام ، ويستخدم runlevel 6 لإعادة تمهيد النظام ، ويستخدم مستوى التشغيل 1 للحصول على النظام في وضع المستخدم المفرد. ليس من المفترض استخدام Runlevel S بشكل مباشر ولكن بدلاً من ذلك من خلال البرامج النصية التي يتم تنفيذها عند الدخول إلى مستوى التشغيل 1.

Runlevels 7 إلى 9 هي أيضا صالحة ، وإن لم تكن موثقة بشكل جيد لأن المتغيرات "التقليدية" يونيكس لا تستخدمها. Runlevels S و s هي نفسها. داخليا ، هم أسماء مستعارة لنفس مستوى التشغيل.

تمهيد

بعد استدعاء التهيئة كخطوة أخيرة لتتابع بدء تشغيل kernel ، يبحث عن الملف / etc / inittab لمعرفة ما إذا كان هناك إدخال من النوع initdefault . يحدد الإدخال initdefault مستوى التشغيل الأولي للنظام. إذا لم يكن هناك مثل هذا الإدخال (أو لا / etc / inittab على الإطلاق) ، يجب إدخال مستوى التشغيل في وحدة تحكم النظام.

يأخذ Runlevel S أو s النظام إلى وضع المستخدم المفرد ولا يتطلب ملف / etc / inittab. في وضع المستخدم المفرد ، يتم فتح shell root على / dev / console.

عند الدخول إلى وضع المستخدم المفرد ، يقرأ init حالات ioctl لوحدة التحكم من /etc/ioctl.save. في حالة عدم وجود هذا الملف ، تهيئة init السطر في باود 9600 ومع إعدادات CLOCAL. عندما يترك init وضع المستخدم المفرد ، فإنه يخزن إعدادات ioctl الخاصة بالوحدة في هذا الملف حتى يتمكن من إعادة استخدامها لجلسة المستخدم المفرد التالية.

عند الدخول إلى وضع متعددة المستخدمين للمرة الأولى ، يقوم Init بإدراج إدخالات التمهيد والتمهيد للسماح لأنظمة الملفات بالتحميل قبل أن يتمكن المستخدمون من تسجيل الدخول. ثم تتم معالجة كافة الإدخالات التي تطابق مستوى التشغيل.

عند بدء عملية جديدة ، يقوم Init أولاً بالتحقق من وجود الملف / etc / initscript. إذا كان كذلك ، فإنه يستخدم هذا البرنامج النصي لبدء العملية.

في كل مرة ينهي فيها الطفل ، تسجل Init الحقيقة والسبب في أنها ماتت في / var / run / utmp و / var / log / wtmp ، بشرط وجود هذه الملفات.

تغيير Runlevels

بعد أن ينتج عن كل العمليات المحددة ، تنتظر "أوين" أن تموت واحدة من عملياتها الأصلية ، أو تشير إلى إشارة توليد الطاقة ، أو إلى أن يتم توجيهها بواسطة Telinit لتغيير مستوى تشغيل النظام. عندما يحدث واحد من هذه الشروط الثلاثة ، فإنه يعيد فحص الملف / etc / inittab. يمكن إضافة الإدخالات الجديدة إلى هذا الملف في أي وقت. ومع ذلك ، init لا يزال ينتظر أحد الشروط الثلاثة المذكورة أعلاه تحدث. لتوفير استجابة فورية ، قد يقوم الأمر Telinit Q أو q بتنبيه Init لإعادة فحص الملف / etc / inittab.

إذا لم يكن Init في وضع المستخدم المفرد ويتلقى إشارة Powerfail (SIGPWR) ، فإنه يقرأ الملف / etc / powerstatus. ثم يبدأ الأمر بناء على محتويات هذا الملف:

  • فشل): الطاقة فشلت ، UPS توفر الطاقة. تنفيذ إدخالات powerwail و powerfail.
  • حسنا): تمت استعادة السلطة ، وتنفيذ إدخالات powerokwait.
  • منخفض): الطاقة فشلت ، و UPS لديها بطارية منخفضة. تنفيذ إدخالات powerfailnow.

إذا لم يكن / etc / powerstatus موجودًا أو يحتوي على أي شيء بخلاف الأحرف F أو O أو L ، يتصرف Init كما لو أنه يقرأ الحرف F.

استخدام SIGPWR و / etc / powerstatus غير مشجع. يجب على أي شخص يريد التفاعل مع Init استخدام قناة control / dev / initctl.

عند طلب Init لتغيير مستوى التشغيل ، يرسل إشارة التحذير SIGTERM إلى جميع العمليات غير المحددة في مستوى التشغيل الجديد. ثم ينتظر خمس ثوانٍ قبل إنهاء هذه العمليات بالقوة باستخدام إشارة SIGKILL. لاحظ أن Init يفترض أن جميع هذه العمليات وأحفادها ستبقى في نفس مجموعة العمليات التي قام Init بإنشائها في الأصل. في حالة تغيير أي عملية لارتباط مجموعة العمليات الخاصة بها ، فإنها لا تتلقى هذه الإشارات. يجب إنهاء هذه العمليات بشكل منفصل.

Telinit

ترتبط Telinit بـ / sbin / init. يستغرق الأمر حجة ذات حرف واحد ويشير إلى "البدء" لتنفيذ الإجراء المناسب. تعمل الحجج التالية كتوجيهات لـ Telinit:

  • 0 أو 1 أو 2 أو 3 أو 4 أو 5 أو 6: أخبر Init للتبديل إلى مستوى التشغيل المحدد.
  • أ ، ب ، ج: أخبر Init لمعالجة فقط / etc / inittab إدخالات ملف وجود مستوى التشغيل a أو b أو c.
  • س أو ف: أخبر Init لإعادة فحص الملف / etc / inittab.
  • ق أو ق: أخبر Init للتبديل إلى وضع المستخدم المفرد.
  • يو أو: أخبر init أن يعيد تنفيذ نفسه (الحفاظ على الحالة). لا إعادة فحص ملف / etc / inittab يحدث. يجب أن يكون مستوى الرتبة S أو s أو 1 أو 2 أو 3 أو 4 أو 5 ؛ وإلا ، يتم تجاهل الطلب بدون مطالبة.

يمكن لـ Telinit أيضاً إخبار Init كم من الوقت يجب الانتظار بين إرسال إشارات SIGTERM و SIGKILL. الافتراضي هو خمس ثوان ، ولكن يمكن تغيير هذه القيمة مع - ث اختيار.

يمكن استدعاء Telinit فقط بواسطة المستخدمين ذوي الامتيازات المناسبة.

التحقق الثنائي الثنائي إذا كان Init أو Telinit بالنظر إلى معرّف العملية الخاص به. رقم تعريف عملية Init الحقيقي هو دائمًا 1. من هذا ، يتبع ذلك بدلاً من استدعاء Telinit ، يمكن للشخص استخدام Init كاختصار.