الخميس، 19 أغسطس 2021

المجلد proc في نظام لينكس : أكثر من مجرد مجلد

 بسم الله الرحمن الرحيم

احد الاسباب التي تجعل نظام لينكس يتفوق على نظام ويندوز هو القدرة و التحكم الذي يعطي للمستخدم , و في هذا المقال ستعرف على المجلد proc الذي يمكنك من الوصول إلى الذاكرة , و تعديل عمل النواة ( Kernel ) في الوقت الفعلي , و الحصول على معلومات مفصلة عن حالة نظامك .


  • ما هو مجلد proc و اين يخزن ؟
هذا المجلد موجود في جميع توزيعات لينكس , و هو نظام ملفات افتراضي موجود في الذاكرة (RAM) من النوع procfs يتم انشاءه من قبل النواة عند عملية الاقلاع (Booting) و يتم ربطه على المجلد proc/ أو ما يمسى بمصطلحات لينكس بعملية (Mount) .

قبل أن نبدأ الرجاء توخى الحذر , تذكر أنك تقوم بتعديل الذاكرة بشكل مباشر فأي خطأ سيؤثر على نظامك
 
  •  الوصول إلى مجلد الأوامر 
ببساطة فقط غير المجلد الحالي بالاستخدام الأمر cd كتالي :
 
cd /proc


  • عرض معلومات المعالج بالتفصيل :
cat /proc/cpuinfo

  • عرض اصدارة النظام 
cd /proc/version


نسخة لينكس في بداية المعطيات هي تخص النواة (Kernel) , gcc هي نسخة الـــ"Compiler" , و المجمع Linker هو GUN ld


  • عرض معلومات الذاكرة 
باستخدام الأمر cat في نظامك الذي يعرض الملفات النصية و يعدلها تستطيع عرض محتويات الملف meminfo كالتالي :

cat /proc/meminfo

سيتم طباعة معلومات تفصلية عن الذاكرة لك كالصورة التالية



  • عرض الوقت الذي مضى على تشغيل النظام (uptime)
باستخدام نفس الأمر cat و لكن على الملف uptime
 
cat /proc/uptime

ستكون المخرجات كالتالي :
 
350735.47 234388.90

الرقم على اليمين يمثل الوقت الذي مضى منذ تشغيل النظام بالثواني , الرقم الثاني يمثل الوقت الذي الذي امضاه احد أنوية المعالج (Processor core) في وضعية idle (وضع لتوفير الطاقة عن تنفيذ النواة لجميع المهام الموكلة بها ) .


  • الحصول على معلومات عن أي برنامج يعمل على نظامك 
اذا كتب الامر ls و أنت في المجلد في proc :
 
ls /proc

ستظر لك مجلدات تحمل أرقام فقط كأسم للمجلد كالصورة التالية:



اسماء هذه المجلد ترمز إلى رقم المعرف الخاص بالعملية (PID) , أو باللغة مبسط كل برنامج في الذاكرة يحصل على رقم يميزه , هذا المجلد الخاص بالبرامج التي في الذاكرة يحتوي على الكثير من المعلومات المفيدة , و سنعرض البعض منها باستخدام مثال , في موجه الأوامر قم بطباعة الأمر التالي :
 
cat > /tmp/test.txt &
 
هذه الأمر يقوم بأنشاء الملف test.txt في مجلد الملفات المؤقته tmp/ , وتحويل المدخلات بواسطة الأمر cat , الرمز & يعني تحويل الأمر إلى البرامج التي تعمل في الخلفية (Background) , و سيطبع لك الرقم الخاص بالعملية , في مثالنا سيكون الرقم 9563 , طبعا سكيون الرقم لديك مختلف .



سيتم انشاء مجلد في proc بنفس رقم العملية (PID) , قم بالدخول للمجلد بأستخدام الامر cd :

cd /proc/9563

قم بتغير رقم المجلد بحسب الرقم الذي ظهر لك بعد تنفيذ الأمر , و الأن لنبدأ , لمعرفة الملف التنفيذي الذي انشاء العلمية (PID) , استخدم الملف exe و الأمر ls كالتالي  :
 

معرفة المجلد الذي تم تنفيذ الأمر فيه , و هنا لا أعني المجلد الذي نفذنا الأمر عليه , أنما المجلد الحالي الذي كنت فيه عند تنفيذ الأمر (Current Working Directory) :
 

معرفة سطر الأوامر الذي بدأ هذا الأمر :

معرفة الملفات التي يقوم البرنامج باستخدمها, يجود داخل مجلد العملية مجلد بالاسم fd يحتوي ملفات تحمل ارقام كأسم لها , هذه الملفات هي مجلد رابط (Link) للملفات التي يستخدمها البرنامج , فقط استخدم الأمر ls لعرض هذه الملفات :


 ملاحظة الملف dev/pts/0 يرمز للطرفية (Terminal) , تجد هنا الملف الذي قمنا باستخدام لتخزين المعطيات , في البرامج التي تستخدم الشبكة ستجد ملفات من نوع أخر كمثالنا التالي للأمر nc :

ستلاحظ هنا في السطر الأخير وجود رابط لملف من نوع القابس الخاص بالشبكة (Socket) , هنا يجب ان نشير بأن فلسفة نظام لينكس بأن كل شيء هو ملف .

 لعرض جميع العمليات الفرعية (Child processes) التي تحت العملية الرئيسية (Parent process) ستجد مجلد بالاسم task في مجلد العملية الرئيسية :

لعرض معلومات العملية بشكل مفصل ستجد الملف الخاص status , فقط استخدم الأمر cat كالتالي :


في السطر الثالث ترى حالة البرنامج في حالتنا "Stopped" , معلومات الذاكرة بالتفصيل .


هذا الشرح البسيط لا يعرض الا جزء بسيط من قدرات هذا المجلد , و ان شاء الله في القريب سوف انشر مقال حول كيفية تعديل الذاكرة للبرنامج و هو يعمل  بواسطة هذا المجلد و بالخصوص الملفين maps و mem المتواجدين في مجلد العملية .

لمن يقرأ الموضوع , هل لديك اضافة ؟ أو تعليق شاركنا لو سمحت .





ليست هناك تعليقات:

إرسال تعليق