سنبدأ هذا المقال بمراجعة عامة وموجزة لما يحدث منذ لحظة الضغط على زر التشغيل لتشغيل خادم RHEL 7 الخاص بك حتى تظهر لك شاشة تسجيل الدخول في واجهة سطر الأوامر.

يرجى ملاحظة أن:
1. تنطبق نفس المبادئ الأساسية، مع تعديلات طفيفة ربما، على توزيعات Linux الأخرى أيضًا، و
2. لا يهدف الوصف التالي إلى تمثيل شرح شامل لعملية الإقلاع، ولكن فقط الأساسيات.
عملية الإقلاع في نظام Linux
1. يقوم اختبار الذاتي عند التشغيل (POST) بتهيئة وإجراء فحوصات للأجهزة.
2. عند انتهاء اختبار الذاتي عند التشغيل (POST)، يتم نقل التحكم في النظام إلى محمل التشغيل المرحلة الأولى، الذي يتم تخزينه إما على القطاع التمهيدي لأحد أقراص الصلب (للأنظمة القديمة باستخدام BIOS وMBR)، أو قسم (U)EFI مخصص.
3. يقوم محمل التشغيل المرحلة الأولى بتحميل محمل التشغيل المرحلة الثانية، والذي هو في معظم الأحوال GRUB (GRand Unified Boot Loader)، الذي يتواجد داخل /boot، الذي بدوره يقوم بتحميل النواة ونظام الملفات الأساسي المبني على الذاكرة العشوائية (المعروف أيضًا باسم initramfs، والذي يحتوي على برامج وملفات ثنائية تقوم بالإجراءات اللازمة لتحميل نظام الملفات الجذر الفعلي في النهاية).
4. يتم عرض شاشة ترحيب تتيح لنا اختيار نظام تشغيل ونواة للتمهيد:

٥. يقوم النواة بإعداد الأجهزة المتصلة بالنظام وبمجرد تم توصيل نظام الملفات الجذري، يطلق العملية بـ PID 1، التي بدورها ستهيئ عمليات أخرى وتقدم لنا موجه تسجيل الدخول.
ملاحظة: إذا كنا نرغب في ذلك في وقت لاحق، يمكننا فحص تفاصيل هذه العملية باستخدام الأمر dmesg وتصفية الناتج باستخدام الأدوات التي شرحناها في مقالات سابقة من هذه السلسلة.

في المثال أعلاه، استخدمنا الأمر المعروف باسم ps لعرض قائمة بالعمليات الحالية التي تكونت من عملية الأب (أو بعبارة أخرى، العملية التي بدأتها) systemd (مدير النظام والخدمة الذي انتقلت إليه معظم توزيعات لينكس الحديثة) أثناء بدء تشغيل النظام:
# ps -o ppid,pid,uname,comm --ppid=1
تذكر أن العلم -o (المختصر لـ –format) يسمح لك بتقديم ناتج ps بتنسيق مخصص يناسب احتياجاتك باستخدام الكلمات الرئيسية المحددة في STANDARD FORMAT SPECIFIERS في man ps.
حالة أخرى يرغب فيها تحديد الناتج لـ ps بدلاً من الاعتماد على الإعداد الافتراضي هي عندما تحتاج إلى العثور على العمليات التي تسبب حملًا كبيرًا على وحدة المعالجة المركزية و/أو الذاكرة، وترتيبها وفقًا لذلك:
# ps aux --sort=+pcpu # Sort by %CPU (ascending) # ps aux --sort=-pcpu # Sort by %CPU (descending) # ps aux --sort=+pmem # Sort by %MEM (ascending) # ps aux --sort=-pmem # Sort by %MEM (descending) # ps aux --sort=+pcpu,-pmem # Combine sort by %CPU (ascending) and %MEM (descending)

مقدمة إلى SystemD
قليل من القرارات في عالم Linux تسببت بمزيد من الجدل من تبني systemd من قبل توزيعات Linux الرئيسية. يسمون مؤيدو systemd كمزايا رئيسية له الحقائق التالية:
اقرأ أيضا: القصة وراء ‘init’ و ‘systemd’
1. يسمح systemd بمزيد من المعالجة المتوازية خلال بدء تشغيل النظام (على عكس SysVinit الأقدم، الذي يميل دائمًا إلى أن يكون أبطأ لأنه يبدأ العمليات واحدة تلو الأخرى، يتحقق مما إذا كانت تعتمد واحدة على الأخرى، ثم ينتظر إطلاق الشياطين حتى يمكن بدء خدمات أكثر)، و
2. يعمل كإدارة ديناميكية للموارد في نظام يعمل. وبالتالي، يتم بدء تشغيل الخدمات عند الحاجة (لتجنب استهلاك موارد النظام إذا لم يتم استخدامها) بدلاً من إطلاقها دون سبب صحيح أثناء التمهيد.
3. التوافق مع سكربتات SysVinit القديمة.
يتحكم systemd بواسطة أداة systemctl. إذا جئت من خلفية SysVinit، فمن المحتمل أن تكون على دراية بـ:
- أداة service، التي -في تلك الأنظمة القديمة- كانت تُستخدم لإدارة سكربتات SysVinit، و
- أداة chkconfig، التي كانت تستخدم لتحديث واستعلام معلومات مستويات التشغيل لخدمات النظام.
- إيقاف التشغيل، الذي يجب أن تكون قد استخدمته عدة مرات إما لإعادة التشغيل أو إيقاف تشغيل النظام الجاري.
الجدول التالي يوضح التشابهات بين استخدام هذه الأدوات التقليدية وsystemctl:
Legacy tool | Systemctl equivalent | Description |
service name start | systemctl start name | Start name (where name is a service) |
service name stop | systemctl stop name | Stop name |
service name condrestart | systemctl try-restart name | Restarts name (if it’s already running) |
service name restart | systemctl restart name | Restarts name |
service name reload | systemctl reload name | Reloads the configuration for name |
service name status | systemctl status name | Displays the current status of name |
service –status-all | systemctl | Displays the status of all current services |
chkconfig name on | systemctl enable name | Enable name to run on startup as specified in the unit file (the file to which the symlink points). The process of enabling or disabling a service to start automatically on boot consists in adding or removing symbolic links inside the /etc/systemd/system directory. |
chkconfig name off | systemctl disable name | Disables name to run on startup as specified in the unit file (the file to which the symlink points) |
chkconfig –list name | systemctl is-enabled name | Verify whether name (a specific service) is currently enabled |
chkconfig –list | systemctl –type=service | Displays all services and tells whether they are enabled or disabled |
shutdown -h now | systemctl poweroff | Power-off the machine (halt) |
shutdown -r now | systemctl reboot | Reboot the system |
Systemd أدخل أيضًا مفاهيم الوحدات (التي يمكن أن تكون إما خدمة أو نقطة تركيب أو جهاز أو مقبس شبكة) والأهداف (وهو كيفية إدارة systemd لبدء عدة عمليات ذات صلة في نفس الوقت، ويمكن اعتباره -على الرغم من عدم المساواة- ما يعادل مستويات التشغيل في الأنظمة القائمة على SysVinit.
ملخص
المهام الأخرى المتعلقة بإدارة العمليات قد تشمل، ولكن قد لا تقتصر على، القدرة على:
1. ضبط أولوية التنفيذ بقدر ما يتعلق استخدام موارد النظام لعملية:
يتم ذلك من خلال أداة renice، التي تغير أولوية جدولة إحدى أو أكثر العمليات الجارية. ببساطة، فإن أولوية الجدولة هي ميزة تسمح لنواة النظام (الموجودة في الإصدارات => 2.6) بتخصيص موارد النظام وفقًا لأولوية التنفيذ المعينة (المعروفة أيضًا باللطف، في نطاق من -20 إلى 19) لعملية معينة.
الصيغة الأساسية لأمر renice هي كما يلي:
# renice [-n] priority [-gpu] identifier
في الأمر العام أعلاه، الوسيط الأول هو قيمة الأولوية التي ستستخدم، بينما يمكن تفسير الوسيط الآخر على أنه معرفات العمليات (وهو الإعداد الافتراضي)، معرفات مجموعات العمليات، معرفات المستخدمين، أو أسماء المستخدمين. يمكن للمستخدم العادي (باستثناء المستخدم الجذر) فقط تعديل أولوية جدولة العملية التي يمتلكها، وزيادة مستوى الرقة فقط (وهو ما يعني استهلاك موارد النظام بشكل أقل).

2. إيقاف (أو انقطاع التنفيذ الطبيعي) لعملية حسب الحاجة:
بتعبير أكثر دقة، يعني إيقاف عملية إرسال إشارة إليها لإكمال تنفيذها بسلاسة (SIGTERM=15) أو على الفور (SIGKILL=9) من خلال أوامر kill أو pkill.
الفارق بين هاتين الأداةين هو أن الأولى تستخدم لإنهاء عملية معينة أو مجموعة عمليات بأكملها، بينما الأخيرة تتيح لك القيام بالشيء نفسه بناءً على الاسم والسمات الأخرى.
بالإضافة إلى ذلك، pkill يأتي مع pgrep، الذي يعرض لك معرفات العملية التي سيؤثر فيها pkill. على سبيل المثال، قبل التشغيل:
# pkill -u gacanepa
قد يكون من المفيد أن ننظر بسرعة إلى أيها معرفات العملية تمتلكها gacanepa:
# pgrep -l -u gacanepa

افتراضيًا ، كل من kill و pkill يرسلان إشارة SIGTERM إلى العملية. كما ذكرنا أعلاه ، يمكن تجاهل هذه الإشارة (أثناء انتهاء تنفيذ العملية أو بشكل دائم) ، لذلك عندما تحتاج حقًا إلى إيقاف عملية قيد التشغيل بسبب سبب صحيح ، ستحتاج إلى تحديد إشارة SIGKILL على سطر الأوامر:
# kill -9 identifier # Kill a process or a process group # kill -s SIGNAL identifier # Idem # pkill -s SIGNAL identifier # Kill a process by name or other attributes
الاستنتاج
في هذه المقالة شرحنا أساسيات عملية التمهيد في نظام RHEL 7 ، وقمنا بتحليل بعض الأدوات المتاحة لمساعدتك في إدارة العمليات باستخدام الأدوات العامة وأوامر systemd الخاصة.
يرجى ملاحظة أن هذه القائمة ليست مقصودة لتغطية جميع جوانب هذا الموضوع ، لذا لا تتردد في إضافة الأدوات والأوامر المفضلة لديك إلى هذه المقالة باستخدام نموذج التعليق أدناه. كما نرحب بالأسئلة والت
Source:
https://www.tecmint.com/rhcsa-exam-boot-process-and-process-management/