فهم العمليات (Processes) ومراقبة استهلاك الموارد (top, htop, ps, kill)
فهم العمليات (Processes) ومراقبة استهلاك الموارد (top, htop, ps, kill)
إدارة العمليات في لينكس ليست مجرد مهارة تشغيلية، بل هي جزء أساسي من فهم سلوك النظام وتحليل الأداء وحل الأعطال. عندما يعمل أي برنامج، فإنه يتحول إلى عملية لها معرّف خاص، وذاكرة، وأولوية، ووقت معالجة على المعالج. لذلك فإن إتقان أدوات مثل ps وtop وhtop وkill يرفع قدرتك على إدارة الخوادم وأجهزة لينكس بكفاءة عالية.
إذا كنت قد قرأت سابقاً مقدمة إلى عالم لينكس: التاريخ، الفلسفة، وفهم النواة (Kernel) فستعرف أن النواة هي المسؤولة عن جدولة العمليات وتوزيع الموارد. ومن هنا تأتي أهمية مراقبة ما يحدث داخل النظام لحظة بلحظة، خصوصاً عند بطء الخادم أو استهلاك الذاكرة أو توقف خدمة حساسة.
ما هي العملية في لينكس؟
العملية هي نسخة قيد التنفيذ من برنامج ما. عند تشغيل محرر نصوص أو خدمة ويب أو حتى أمر بسيط من الطرفية، يقوم النظام بإنشاء عملية جديدة تحمل PID أو رقم تعريف العملية. هذا المعرّف يسمح للنظام وللمسؤول بمتابعتها أو التحكم بها لاحقاً.
كل عملية تمتلك مجموعة خصائص مهمة، منها المستخدم المالك، ونسبة استهلاك المعالج، وحجم الذاكرة، وحالة التشغيل، والأمر الأصلي الذي أطلقها. بعض العمليات تكون تفاعلية أمام المستخدم، وأخرى تعمل في الخلفية كخدمات نظام أو شياطين daemons.
حالات العمليات الشائعة
- R: عملية قيد التنفيذ أو جاهزة للتنفيذ.
- S: في حالة نوم قابل للمقاطعة، وتنتظر حدثاً معيناً.
- D: نوم غير قابل للمقاطعة، غالباً أثناء انتظار عمليات إدخال/إخراج.
- Z: عملية شبحية Zombie انتهى تنفيذها لكن لم تُنظَّف بعد.
- T: عملية متوقفة أو معلّقة.
ظهور عدد كبير من العمليات في حالة D أو Z قد يكون مؤشراً على مشكلة أعمق في التخزين أو في التطبيق نفسه، وليس مجرد استهلاك موارد عابر.
أداة ps: التقاط صورة ثابتة للعمليات
الأمر ps يعرض لقطة فورية للعمليات الجارية. وهو مثالي عند الحاجة إلى استعلام سريع، أو عند دمجه مع الأنابيب وإعادة التوجيه (Pipes and Redirections: |, >, >>) أو مع أدوات البحث مثل البحث المتقدم في النظام باستخدام (find, locate, grep).
أمثلة عملية على ps
ps
ps aux
ps -ef
ps aux | grep nginx
ps -u www-data
ps -p 1234 -o pid,ppid,user,%cpu,%mem,cmd
الصيغة ps aux من أكثر الصيغ استخداماً، لأنها تعرض العمليات لجميع المستخدمين مع نسب استهلاك المعالج والذاكرة وسطر الأمر الكامل. أما ps -ef فهي مفضلة في بعض التوزيعات والإجراءات الإدارية.
عند العمل من الدخول الأول إلى الطرفية (Terminal): الأوامر الأساسية والمساعدة (man, help) ستلاحظ أن ps مفيد جداً لفهم شجرة العمليات ومراقبة الأوامر التي أطلقتها بنفسك أو التي تعمل كخدمات نظام.
أداة top: المراقبة الحية للمعالج والذاكرة
إذا كان ps يقدم صورة ثابتة، فإن top يقدم لوحة مراقبة مباشرة تتحدث باستمرار. هذه الأداة أساسية عند تحليل الأحمال العالية، أو عند اكتشاف عملية تستهلك المعالج أو الذاكرة بشكل غير طبيعي.
تشغيل top وأهم ما يظهر فيه
top
في أعلى الشاشة ستجد معلومات عامة مثل وقت تشغيل النظام، وعدد المستخدمين، ومتوسط الحمل load average، ثم استهلاك المعالج والذاكرة الفعلية وذاكرة التبديل swap.
في القسم السفلي تظهر العمليات مرتبة عادة حسب استهلاك المعالج. الأعمدة المهمة تشمل PID وUSER و%CPU و%MEM وTIME+ وCOMMAND.
اختصارات مفيدة داخل top
- الضغط على
Pللترتيب حسب استهلاك المعالج. - الضغط على
Mللترتيب حسب الذاكرة. - الضغط على
kلإرسال إشارة إلى عملية. - الضغط على
1لعرض كل نواة معالج بشكل منفصل.
أداة htop: تجربة تفاعلية أكثر وضوحاً
تُعد htop نسخة أكثر حداثة وسهولة من top. توفر ألواناً أوضح، وشريطاً بيانياً للموارد، وإمكانية التنقل بالأسهم، وتحديد العمليات مباشرة دون الحاجة إلى تذكر الكثير من الاختصارات.
تثبيت وتشغيل htop
sudo apt install htop
htop
إن لم تكن الأداة مثبّتة، يمكنك استخدام مدير الحزم المناسب حسب توزيعتك كما شرحنا في إدارة الحزم البرمجية وتحديث النظام (APT, YUM/DNF, Pacman). بعد تشغيلها ستتمكن من الفرز، والبحث، وإنهاء العمليات، وحتى عرض الشجرة الهرمية للعلاقات بين العمليات.
الميزة العملية في htop أنه يقلل احتمال الخطأ أثناء التعامل مع خادم إنتاجي، لأن الواجهة أكثر وضوحاً وتعرض المعلومات الحساسة بطريقة بصرية ممتازة.
إنهاء العمليات باستخدام kill و killall
عندما تتجمد عملية، أو تستهلك كل المعالج، أو تمنع خدمة أخرى من العمل، نلجأ إلى إرسال إشارة لها. هنا يأتي دور الأمر kill، وهو لا يعني دائماً القتل الفوري، بل إرسال signal محددة إلى العملية.
أشهر الإشارات المستخدمة
SIGTERMأو الرقم15: طلب إنهاء منظم ومحترم.SIGKILLأو الرقم9: إنهاء إجباري وفوري.SIGHUP: يُستخدم أحياناً لإعادة تحميل الإعدادات.
أمثلة عملية على kill
kill 1234
kill -15 1234
kill -9 1234
killall nginx
pkill -f python
ابدأ دائماً بـ SIGTERM قبل اللجوء إلى SIGKILL. الإنهاء القسري قد يمنع التطبيق من حفظ البيانات أو تنظيف الملفات المؤقتة الموجودة مثلاً داخل المسارات التي تعرفت عليها في هيكلية ملفات لينكس (Filesystem Hierarchy Standard – FHS).
استخدام
kill -9يجب أن يكون آخر حل، خصوصاً مع قواعد البيانات والخدمات الإنتاجية، لأنه يتجاوز آليات الإغلاق الآمن.
سيناريو عملي لتحليل استهلاك الموارد
لنفترض أن الخادم أصبح بطيئاً بشكل مفاجئ. التسلسل الاحترافي للتحليل يكون عادة كالتالي:
- تشغيل
topأوhtopلمعرفة ما إذا كانت المشكلة من المعالج أو الذاكرة. - تحديد
PIDالخاص بالعملية المشبوهة. - استخدام
ps -p PID -o pid,ppid,user,%cpu,%mem,cmdللحصول على تفاصيل أوضح. - فحص السجلات أو ملفات الخدمة باستخدام أدوات النصوص مثل أدوات عرض ومعالجة النصوص (cat, nano, vim, less, tail).
- إذا ثبت أن العملية معلقة أو خارجة عن السيطرة، أرسل لها
SIGTERMأولاً.
هذا الأسلوب أفضل من القتل العشوائي للعمليات، لأنه يعتمد على الملاحظة ثم التشخيص ثم الإجراء، وهي منهجية مطلوبة لأي مسؤول نظام محترف.
أفضل الممارسات عند إدارة العمليات
- راقب السبب الجذري للمشكلة، لا النتيجة فقط.
- لا تنهِ عمليات لا تعرف وظيفتها، خاصة تلك التابعة للمستخدم
root. - استخدم الصلاحيات بحذر وفق ما تعلمته في إدارة الصلاحيات والملكية (Chmod, Chown, Sudo).
- تحقق من مالك العملية إذا كانت مرتبطة بحسابات خدمات أو مستخدمين ضمن إدارة المستخدمين والمجموعات (Users and Groups Management).
- دوّن الأوامر والنتائج عند تحليل مشاكل الإنتاج لتسهيل المراجعة لاحقاً.
خلاصة
فهم العمليات في لينكس يمنحك رؤية أعمق لما يجري داخل النظام، ويحوّل التعامل مع الأعطال من رد فعل عشوائي إلى تحليل منهجي دقيق. الأداة ps مناسبة للاستعلامات السريعة، وtop وhtop ممتازتان للمراقبة الحية، بينما يتيح kill التدخل المنضبط عند الحاجة.
كلما أتقنت هذه الأدوات، أصبحت أكثر قدرة على إدارة الخوادم، وتحسين الأداء، والتعامل مع مشاكل التطبيقات بثقة واحترافية، وهي مهارة محورية في أي مسار متقدم داخل عالم لينكس وإدارة الأنظمة.
20 comments