الرئيسية قاعدة المعرفة البرمجة والمنطق العمليات وإدارة الموارد: مراقبة ما يعمل على الخادم
البرمجة والمنطق

العمليات وإدارة الموارد: مراقبة ما يعمل على الخادم

ما هي العملية في Linux؟

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

خصائص كل عملية

  • PID: رقم تعريف فريد للعملية
  • PPID: رقم العملية الأب التي أنشأتها
  • المالك: المستخدم الذي بدأ العملية
  • الحالة: قيد التنفيذ، نائمة، متوقفة، أو زومبي
  • استهلاك الموارد: نسبة CPU والذاكرة المستخدمة

عرض العمليات: ps و ps aux

ps                                   # عمليات الطرفية الحالية فقط
ps aux                               # جميع العمليات مع التفاصيل

أعمدة ps aux المهمة: USER، PID، %CPU، %MEM، STAT، COMMAND.

ps aux | grep "[m]onitor"            # البحث عن عملية (تجنب عرض grep نفسها)
ps -u scada                          # عمليات مستخدم محدد
ps -ef --forest                      # عرض شجري

pgrep -a monitor                     # بحث سريع بالاسم
pgrep -c nginx                       # عدّ عمليات nginx

المراقبة الحيّة: top و htop

top                                  # المراقب المدمج
# اختصارات: q=خروج، M=ترتيب بالذاكرة، P=بالمعالج، k=إنهاء عملية

htop                                 # واجهة ملونة وتفاعلية (sudo apt install htop)
# F9=إنهاء عملية، F6=ترتيب
top -u scada                         # مراقبة مستخدم محدد
ps aux --sort=-%cpu | head -6        # أكثر 5 عمليات استهلاكاً للمعالج
ps aux --sort=-%mem | head -6        # أكثر 5 استهلاكاً للذاكرة

إرسال الإشارات: kill و killall و pkill

الإشارة الرقم المعنى
SIGTERM 15 إنهاء لطيف (الافتراضي)
SIGKILL 9 إنهاء قسري فوري
SIGHUP 1 إعادة تحميل الإعدادات
SIGSTOP 19 إيقاف مؤقت
kill 1234                            # SIGTERM (لطيف)
kill -9 1234                         # SIGKILL (قسري)
kill -HUP 1234                       # إعادة تحميل الإعدادات

killall sensor_reader                # إنهاء كل عمليات بالاسم
pkill -f "monitor --port 8080"       # إنهاء حسب سطر الأوامر الكامل

دائماً حاول SIGTERM أولاً ثم SIGKILL. SIGTERM يسمح بحفظ البيانات قبل الإنهاء.

العمليات في الخلفية: & و bg و fg و nohup

./data_collector &                   # تشغيل في الخلفية
jobs                                 # عرض مهام الخلفية
fg %1                                # إعادة المهمة للمقدمة
# Ctrl+Z لإيقاف مؤقت
bg %1                                # استئناف في الخلفية

# الاستمرار بعد إغلاق الطرفية
nohup ./monitor_app > /var/log/monitor.log 2>&1 &

./long_script &
disown %1                            # فصل العملية عن الجلسة

مثال عملي: مراقبة عمليات تطبيق المراقبة الصناعي وإيقاف المعلّقة

# 1. عرض عمليات التطبيق
ps aux | grep "[m]onitor_app"

# 2. التحقق من استهلاك الموارد
top -b -n1 | grep "monitor_app"

# 3. البحث عن عمليات زومبي
ps aux | awk '$8 ~ /Z/ {print $0}'

# 4. محاولة الإنهاء اللطيف
pkill -f "monitor_app --stuck"

# 5. الانتظار ثم التحقق
sleep 10 && pgrep -a monitor_app

# 6. إذا لم تستجب — إنهاء قسري
pkill -9 -f "monitor_app --stuck"

# 7. إعادة تشغيل التطبيق
nohup /opt/monitor_app/bin/monitor_app > /var/log/monitor.log 2>&1 &

# 8. التحقق من البدء
sleep 2 && pgrep -a monitor_app && tail -5 /var/log/monitor.log

التحقق من نجاح إعادة التشغيل

بعد إعادة تشغيل أي تطبيق صناعي، تحقق دائماً من:

# هل العملية تعمل؟
pgrep -a monitor_app

# هل تستجيب؟ (إذا كانت تقدم API)
curl -s http://localhost:8080/health

# هل السجلات طبيعية؟
tail -20 /var/log/monitor.log | grep -i error

الخلاصة

تعلمت في هذا الدرس كيفية عرض العمليات ومراقبتها والتحكم بها. إدارة العمليات مهارة حرجة حيث يجب أن تعمل تطبيقات المراقبة على مدار الساعة. تذكّر: SIGTERM أولاً قبل SIGKILL، واستخدم nohup لضمان استمرار العمليات بعد قطع الاتصال.

processes ps top htop kill resources العمليات المراقبة الموارد المعالج الذاكرة إدارة العمليات