انتقل إلى المحتوى الرئيسي

المختبر 4.1 - تصور العمليات

الأهداف​

في نهاية هذا المختبر، ستكون قادرًا على:

  • تصور العمليات باستخدام ps، top، htop
  • فهم المعلومات المعروضة
  • تصفية وفرز العمليات
  • مراقبة العمليات في الوقت الحقيقي

المتطلبات المسبقة​

  • تثبيت أوبونتو 24.04
  • فتح الطرفية
  • تثبيت htop (اختياري ولكن موصى به)

التمرين 1: ps (حالة العملية)​

الخطوة 1: الأوامر الأساسية​

# عرض جميع العمليات
ps aux

# عرض عمليات المستخدم الحالي
ps

# مع تفاصيل أكثر
ps auxf # شجرة العمليات

# عرض عملية محددة
ps aux | grep firefox

الخطوة 2: الخيارات المفيدة​

# تنسيق مخصص
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -10

# العمليات حسب المستخدم
ps -u $USER

# العمليات حسب PID
ps -p 1

# العمليات مع شجرة
pstree
pstree -p # مع PID

الخطوة 3: التحليل​

# أعلى 10 حسب CPU
ps aux --sort=-%cpu | head -11

# أعلى 10 حسب الذاكرة
ps aux --sort=-%mem | head -11

# عد العمليات
ps aux | wc -l

# حسب المستخدم
ps aux | awk '{print $1}' | sort | uniq -c | sort -rn

التمرين 2: top​

الخطوة 1: الاستخدام الأساسي​

# تشغيل top
top

# الأوامر في top:
# - 'q': الخروج
# - 'k': قتل عملية (إدخال PID)
# - 'r': تغيير أولوية عملية
# - 'M': فرز حسب الذاكرة
# - 'P': فرز حسب CPU
# - 'f': تغيير الأعمدة المعروضة
# - '1': عرض جميع وحدات المعالجة المركزية

الخطوة 2: وضع الدفعة​

# تشغيل top في وضع الدفعة (مرة واحدة)
top -bn1 | head -20

# حفظ في ملف
top -bn1 > top-output.txt

# عرض العمليات العليا
top -bn1 | grep -A 20 "PID USER"

التمرين 3: htop (محسن)​

الخطوة 1: التثبيت​

# تثبيت htop
sudo apt update
sudo apt install htop

# تشغيل
htop

الخطوة 2: ميزات htop​

# htop يقدم:
# - واجهة ملونة وبديهية
# - التنقل باستخدام الأسهم
# - التصفية في الوقت الحقيقي (F4)
# - البحث (F3)
# - قتل العمليات (F9)
# - تغيير أولوية العمليات (F7/F8)
# - شجرة العمليات (F5)

الخطوة 3: التكوين​

# في htop:
# - F2: الإعداد (التكوين)
# - F10: الخروج

التمرين 4: معلومات مفصلة​

الخطوة 1: /proc​

# معلومات عن عملية (استبدل PID)
PID=$(pgrep -f firefox | head -1)
echo "PID: $PID"

# الحالة
cat /proc/$PID/status

# الملفات المفتوحة
ls -l /proc/$PID/fd/

# دليل العمل
readlink /proc/$PID/cwd

# الملف التنفيذي
readlink /proc/$PID/exe

الخطوة 2: lsof (إذا تم تثبيته)​

# التثبيت
sudo apt install lsof

# الملفات المفتوحة بواسطة عملية
sudo lsof -p $PID

# العمليات التي تستخدم ملف
sudo lsof /var/log/syslog

# الاتصالات الشبكية
sudo lsof -i

التمرين 5: المراقبة في الوقت الحقيقي​

الخطوة 1: watch​

# مراقبة العمليات
watch -n 1 'ps aux --sort=-%cpu | head -10'

# مراقبة عملية محددة
watch -n 1 'ps -p $PID -o pid,%cpu,%mem,cmd'

الخطوة 2: سكربت المراقبة​

# إنشاء سكربت
cat > ~/monitor-processes.sh << 'EOF'
#!/bin/bash
while true; do
clear
echo "=== $(date) ==="
echo
echo "Top 5 CPU:"
ps aux --sort=-%cpu | head -6
echo
echo "Top 5 ذاكرة:"
ps aux --sort=-%mem | head -6
echo
echo "إجمالي العمليات: $(ps aux | wc -l)"
sleep 2
done
EOF

chmod +x ~/monitor-processes.sh
# تشغيل: ./monitor-processes.sh

التمرين 6: التصفية المتقدمة​

الخطوة 1: حسب الاسم​

# العثور على جميع العمليات التي تحتوي على "python"
ps aux | grep python

# استبعاد عملية grep نفسها
ps aux | grep python | grep -v grep

# باستخدام pgrep
pgrep -a python

الخطوة 2: حسب المستخدم​

# عمليات مستخدم
ps -u root

# جميع العمليات ما عدا root
ps aux | grep -v "^root"

الخطوة 3: حسب الحالة​

# العمليات الجارية
ps aux | grep " R "

# العمليات في الانتظار
ps aux | grep " S "

# العمليات الزومبي
ps aux | grep " Z "

التحقق​

قائمة التحقق​

تحقق من أنك تستطيع:

  • استخدام ps لرؤية العمليات
  • استخدام top للمراقبة في الوقت الحقيقي
  • استخدام htop (واجهة محسنة)
  • تصفية وفرز العمليات
  • رؤية المعلومات المفصلة (/proc)
  • المراقبة في الوقت الحقيقي

أسئلة للتفكير​

  1. ما الفرق بين ps وtop؟

    • ps: لقطة
    • top: تفاعلي، في الوقت الحقيقي
  2. ماذا تعني حالات العمليات (R، S، Z)؟

    • R: جاري (قيد التشغيل)
    • S: نائم (في الانتظار)
    • Z: زومبي (منتهي ولكن لم يتم تنظيفه)
  3. لماذا يفضل htop على top؟

    • واجهة أكثر بديهية
    • تنقل أسهل
    • مزيد من المعلومات المرئية

الخطوات التالية​

  • المختبر 4.2: التحكم في العمليات
  • المختبر 4.3: الأولويات وقيم Nice
  • الفصل 4.2: تصور العمليات

تم إنشاء المختبر في: ديسمبر 2024 - تم اختباره على أوبونتو 24.04