فهم العمليات (Processes) ومراقبة استهلاك الموارد (top, htop, ps, kill)


فهم العمليات (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.

كده نكون غطينا أساسيات فهم العمليات ومراقبة الموارد في لينكس. الموضوع ده عميق وفيه تفاصيل كتير، لكن اللي قلناه ده هو نقطة البداية لأي حد عايز يتحكم في سيرفره ويحل المشاكل بكفاءة. يلا، طبقوا الأوامر دي على أجهزتكم عشان تتعودوا عليها!