كيفية التحقق من استخدام الذاكرة لكل عملية على Linux

How Check Memory Usage Per Process Linux



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

يعمل كل من هذه البرامج كعملية واحدة أو أكثر. تخصص كل عملية قدرًا من ذاكرة الوصول العشوائي أو الذاكرة لنفسها. من الضروري أن تعمل العملية بشكل صحيح. إذا فشلت إحدى العمليات في تخصيص ذاكرة RAM أو ذاكرة كافية ، فلا يمكن إنشاء العملية ولن يتمكن البرنامج من البدء.







لذا ، فإن إحدى المهام الأساسية التي تقوم بها على جهاز الكمبيوتر الخاص بك هي التحقق من مقدار الذاكرة أو ذاكرة الوصول العشوائي (ذاكرة الوصول العشوائي) التي تستخدمها كل عملية. لأن ذاكرة الوصول العشوائي أو ذاكرة جهاز الكمبيوتر الخاص بك محدودة.



تخيل حالة تريد فيها تشغيل برنامج ما وفشلت لأنك لا تملك ذاكرة كافية. قد تكون بعض العمليات تستهلك قدرًا كبيرًا من الذاكرة التي لا تحتاجها الآن. يمكنك إيقاف هذه العمليات أو إيقافها لتحرير ذاكرة الوصول العشوائي أو الذاكرة ، بحيث يمكنك بدء برامجك المهمة.



في هذه المقالة ، سأوضح لك كيفية التحقق من استخدام الذاكرة لكل عملية من العمليات التي تعمل على جهاز Linux الخاص بك. سوف أستخدم Debian 9 Stretch لجميع العروض التوضيحية في هذه المقالة. لكن يجب أن يعمل على أي توزيعات Linux حديثة. هيا بنا نبدأ.





يمكنك استعمال ال ملاحظة أمر للتحقق من استخدام الذاكرة لجميع العمليات على Linux. هناك مشكلة واحدة في هذا الإجراء. ملاحظة لا تظهر لك حقًا مقدار الذاكرة التي تستخدمها عملية ما بتنسيق KB أو MB ، ولكنها ستظهر لك مقدار الذاكرة المستخدمة بالنسبة المئوية.

يمكنك التحقق من استخدام الذاكرة (بالنسبة المئوية) لجميع العمليات التي تعمل على نظام التشغيل Linux الخاص بك باستخدام الأمر التالي:



$ملاحظة -أوpid ، مستخدم ،٪انا انا،أمرفأس| نوع -k3 -r

كما ترى ، يتم سرد جميع العمليات التي تستخدم الذاكرة بالنسبة المئوية بترتيب تنازلي (يتم سرد العمليات التي تستخدم معظم الذاكرة أولاً).

التحقق من استخدام الذاكرة للعمليات باستخدام pmap:

يمكنك التحقق من ذاكرة عملية أو مجموعة من العمليات بتنسيق يمكن للبشر قراءته (بالكيلو بايت أو بالكيلو بايت) باستخدام pmap أمر. كل ما تحتاجه هو PID للعمليات التي تريد التحقق من استخدام الذاكرة لها.

لنفترض أنك تريد التحقق من مقدار الذاكرة التي تستخدمها العملية باستخدام PID 917. للقيام بذلك ، قم بتشغيل pmap على النحو التالي:

$سودوpmap917

كما ترى ، إجمالي الذاكرة المستخدمة بواسطة العملية 917 هو 516104 كيلو بايت أو كيلو بايت. يمكنك أيضًا معرفة مقدار الذاكرة التي تستخدمها المكتبات والملفات الأخرى المطلوبة لتشغيل العملية باستخدام PID 917 أيضًا هنا.

إذا كنت لا تهتم بحجم الذاكرة التي تستخدمها المكتبات أو الملفات التابعة الأخرى ، فقم بتشغيلها pmap على النحو التالي:

$سودوpmap917 | ذيل 1

كما ترى ، تتم طباعة إجمالي الذاكرة المستخدمة بواسطة العملية باستخدام PID 917 فقط على الشاشة.

إذا كنت تريد ، يمكنك تصفية هذا باستخدام awk واحصل على الحجم بالكيلو بايت أو بالكيلو بايت فقط. للقيام بذلك ، قم بتشغيل pmap على النحو التالي:

$سودوpmap917 | ذيل 1 | awk '/ [0-9] K / {print $ 2}'

كما ترى ، تتم طباعة استخدام الذاكرة بالكيلو بايت أو بالكيلو بايت فقط.

يمكنك الآن أيضًا سرد مقدار الذاكرة المستخدمة بواسطة عمليات متعددة باستخدام PIDs الخاصة بهم pmap على النحو التالي:

$سودوpmap917 531 | سيطرةالمجموع

ملاحظة: هنا 917 و 531 عبارة عن معرفات عملية أو معرفات عملية. يمكنك وضع العديد من PIDs كما تريد بهذه الطريقة.

استخدام pmap لسرد استخدام الذاكرة لجميع العمليات بالكيلوبايت:

في هذا القسم ، سأوضح لك كيفية كتابة برنامج شل النصي الخاص بك لسرد استخدام الذاكرة لجميع العمليات التي تعمل على نظام التشغيل Linux الخاص بك بتنسيق يمكن قراءته بواسطة الإنسان (كيلوبايت أو كيلوبايت).

قم أولاً بإنشاء ملف جديد sysmon في دليل العمل الحالي الخاص بك باستخدام الأمر التالي:

$لمس. اتصال. صلةsysmon

الآن اجعل الملف قابلاً للتنفيذ باستخدام الأمر التالي:

$chmod+ x sysmon

sysmon هو البرنامج النصي shell الذي سيعرض جميع العمليات الجارية PID و صاحب و ذاكرة (بالكيلو بايت بترتيب تنازلي) و أمر . لنبدأ.

افتح ال sysmon البرنامج النصي مع محرر النصوص المفضل لديك ، سأستخدمه كيت .

الآن ، أول أمر سأقوم بتشغيله سيعطيني PID و صاحب و أمر لجميع العمليات الجارية مفصولة بنقطتين (:) رمز وتخزينها في RAWIN عامل. ثم قم بالتكرار خلال الإخراج وطباعته على الشاشة.

كما ترى ، أحصل على الإخراج الصحيح.

حان الوقت الآن لمعالجة كل سطر ، وتخزين المعلومات المحددة بنقطتين في متغيرات منفصلة. هذا ما فعلته في السطر 7 و 8 و 9.

كما ترون ، يمكنني الطباعة PID و صاحب و أمر بالتنسيق الخاص بي الآن.

حان الوقت الآن لجلب استخدام الذاكرة لكل PID. الخط 10 يفعل ذلك بالضبط.

كما ترى ، كل شيء يعمل بشكل مثالي. يمكنني الآن طباعة استخدام الذاكرة لكل عملية بالكيلو بايت (KB) أيضًا.

كل ما تبقى الآن هو تنسيق الإخراج ليبدو جميلاً. أنا أفضل تنسيق الجدول. يطبع السطر 5 رأس كل عمود في الجدول.

أخيرًا ، طبعت PID و صاحب و ذاكرة (بالكيلو بايت) و أمر لكل عملية في تنسيق جدولي باستخدام السطر 14.

كما ترى ، إنها تعمل بشكل جيد نوعًا ما. على الرغم من وجود مشكلة صغيرة ، لا يتم فرز العمليات بشكل صحيح بترتيب تنازلي حسب استخدام الذاكرة.

لإصلاح ذلك ، أزلت فرز -bnr -k3 من السطر 3 ولف كل شيء في دالة قذيفة sysmon_main () . ثم ترك مهمة الفرز إلى نوع أمر.

يبدو نص الصدفة النهائي كما يلي:

كما ترون ، إنه يعمل بشكل رائع.

الآن يمكنك نقله إلى مكان ما مثل / البيرة / بن ونفذها تمامًا مثل الأوامر الأخرى على النحو التالي:

$سودو م -الخامسsysmon/usr/صباحا

التنفيذ sysmon :

شكرا لقراءة هذا المقال.