فهم العمليات (Processes) ومراقبة استهلاك الموارد (top, htop, ps, kill)
يا هلا بالشباب! اليوم بنتكلم عن أساسيات أي مهندس أنظمة لينكس: العمليات ومراقبة استهلاكها للموارد. الموضوع ده حيوي عشان تفهم إيه اللي بيحصل في سيرفرك، وإزاي تقدر تتحكم فيه.
إيه هي العملية (Process) أصلاً؟
ببساطة، العملية هي أي برنامج شغال على نظام التشغيل بتاعك. لما تشغل أي حاجة، سواء كان متصفح، سكريبت بايثون، أو حتى أمر طرفية بسيط، ده بيتحول لـ "عملية" (Process) وليه ID خاص بيه اسمه PID (Process ID). كل عملية بتاخد جزء من موارد الجهاز زي الـ CPU والـ RAM.
حالات العمليات (Process States)
العملية مش دايماً بتكون "شغالة". ممكن تكون في حالات مختلفة:
R(Running): العملية شغالة حالياً أو جاهزة للشغل.S(Sleeping): العملية مستنية حاجة تحصل (زي مثلاً إدخال من المستخدم أو انتهاء عملية I/O).Z(Zombie): دي عملية انتهت، لكن الأب بتاعها (Parent Process) لسه ما عملشwait()عليها عشان يشيلها من جدول العمليات. دول ممكن يكونوا مزعجين لو عددهم كبير.T(Stopped): العملية متوقفة، ممكن تكون اتوقفت يدوياً (مثلاً بـCtrl+Z) أو عن طريق إشارة.
أوامر المراقبة الأساسية
1. ps - نظرة سريعة على العمليات
الأمر ps بيوريك لقطة (snapshot) للعمليات اللي شغالة حالياً. مش مراقبة لحظية زي top، لكن مفيد جداً عشان تشوف إيه اللي شغال في لحظة معينة.
أكتر استخدامين شائعين:
ps aux: بيعرض كل العمليات لكل المستخدمين. الـaللـ "all users"، الـuللـ "user-oriented format"، والـxللـ "processes without a controlling tty" (يعني الـ daemons والـ background processes).
ps aux
ps ef: بيعرض العمليات في شكل شجري (tree format) مع الـ full command line، وده مفيد عشان تشوف مين اللي شغل مين.
ps ef
ملاحظة: الـ
PIDهو رقم تعريف العملية، الـPPIDهو رقم تعريف العملية الأب.
2. top - المراقبة اللحظية
الأمر top هو الملك لما تحب تراقب استهلاك الموارد لحظياً. بيوريك العمليات اللي بتستهلك CPU و RAM أكتر حاجة، وبيحدث البيانات كل شوية.
top
جوا top، فيه اختصارات مفيدة:
Shift + P: بيفرز العمليات حسب استهلاك الـ CPU.Shift + M: بيفرز العمليات حسب استهلاك الـ Memory.k: عشان تعملkillلعملية (هيطلب منك الـ PID).q: للخروج منtop.
ملاحظة: الجزء العلوي من
topبيوريك معلومات عامة عن النظام زي الـ uptime، عدد المستخدمين، الـ load average، ومعلومات عن الـ CPU والـ Memory.
3. htop - top على ستيرويدز!
htop هو بديل أحسن بكتير لـ top. بيقدم واجهة رسومية أحلى، أسهل في الاستخدام، وتقدر تعمل حاجات كتير بالماوس أو بالاختصارات.
لو مش عندك، ممكن تسطبه:
sudo apt update && sudo apt install htop # For Debian/Ubuntu
sudo yum install htop # For CentOS/RHEL
بعد ما تسطبه، شغله ببساطة:
htop
من مميزات htop:
- سهولة الفرز والتصفية.
- عرض شجري للعمليات (مثل
ps ef). - سهولة
killالعمليات. - ألوان وتنسيق أفضل.
إنهاء العمليات (Killing Processes)
أحياناً بتحتاج توقف عملية معينة، إما لأنها علقت أو بتستهلك موارد كتير. هنا بيجي دور الأمر kill.
الأساس هو إنك بتدي kill إشارة (signal) معينة للعملية اللي ليها PID معين.
kill [SIGNAL] [PID]
أشهر الإشارات:
SIGTERM(15): دي الإشارة الافتراضية، وبتطلب من العملية إنها تنهي نفسها بشكل لطيف (graceful shutdown)، يعني تديها فرصة تحفظ شغلها وتقفل صح.
kill 1234 # Equivalent to kill -15 1234
SIGKILL(9): دي إشارة قوية جداً، بتنهي العملية فوراً بدون أي فرصة للتنظيف أو الحفظ. استخدمها بس لوSIGTERMمانفعتش، لأنها ممكن تسيب ملفات مؤقتة أو بيانات غير محفوظة.
kill -9 1234
ملاحظة: عشان تعرف الـ
PIDبتاع عملية معينة، ممكن تستخدمps aux | grep [اسم_البرنامج].
مثال: عايز أوقف عملية اسمها my_stuck_app:
ps aux | grep my_stuck_app
# هيظهر لك سطر زي ده: user 1234 0.0 0.1 123456 7890 ? S 10:00 my_stuck_app
# الـ PID هنا هو 1234
kill 1234
# لو ماوقفتش:
kill -9 1234
ملخص وأمثلة عملية
- عايز أعرف إيه اللي بيستهلك CPU كتير؟
شغل
topأوhtopوافرز حسب الـ CPU (Shift+Pفيtop). - عايز أدور على كل العمليات اللي تخص مستخدم معين؟
ps aux | grep [اسم_المستخدم] - عايز أقتل عملية علقت؟
اعرف الـ PID بتاعها بـ
ps aux | grep [اسم_البرنامج]، بعدين استخدمkill [PID]، ولو مانفعتشkill -9 [PID]. - عايز أشوف العمليات في شكل شجري؟
ps efأوhtop.
كده نكون غطينا أساسيات فهم العمليات ومراقبة الموارد في لينكس. الموضوع ده عميق وفيه تفاصيل كتير، لكن اللي قلناه ده هو نقطة البداية لأي حد عايز يتحكم في سيرفره ويحل المشاكل بكفاءة. يلا، طبقوا الأوامر دي على أجهزتكم عشان تتعودوا عليها!