الفصل 4.3 - التحكم في العمليات
الأهداف التعليمية
في نهاية هذا الفصل، ستكون قادرًا على:
- بدء العمليات
- إيقاف وقتل العمليات
- تعليق واستئناف
- إدارة العمليات في الخلفية
- فهم الإشارات
بدء عملية
سطر الأوامر
# عملية في المقدمة
commande
# عملية في الخلفية
commande &
# مثال
sleep 60 &
nohup - تجاهل SIGHUP
# الاستمرار بعد قطع الاتصال
nohup commande &
# إعادة توجيه المخرجات
nohup commande > output.log 2>&1 &
إيقاف عملية
kill - إرسال إشارة
# إشارة TERM (إنهاء بلطف)
kill PID
kill -TERM PID
kill -15 PID
# إشارة KILL (إجباري)
kill -9 PID
kill -KILL PID
# بالاسم
killall nom_processus
killall -9 nom_processus # إجباري
# بالنمط
pkill pattern
pkill -9 pattern
الإشارات الشائعة
| الإشارة | الرقم | الإجراء |
|---|---|---|
| SIGHUP | 1 | Hang up (إعادة تحميل التكوين) |
| SIGINT | 2 | Interrupt (Ctrl+C) |
| SIGQUIT | 3 | Quit (core dump) |
| SIGTERM | 15 | Terminate (بلطف) |
| SIGKILL | 9 | Kill (إجباري، لا يمكن تجاهله) |
| SIGSTOP | 19 | Stop (تعليق) |
| SIGCONT | 18 | Continue (استئناف) |
تعليق واستئناف
تعليق
# إرسال SIGSTOP
kill -STOP PID
kill -19 PID
# أو باستخدام Ctrl+Z في الطرفية
# (تعليق العملية في المقدمة)
استئناف
# إرسال SIGCONT
kill -CONT PID
kill -18 PID
# في المقدمة
fg
# في الخلفية
bg
العمليات في الخلفية
jobs - عرض الوظائف
# عرض الوظائف
jobs
# مع PIDs
jobs -l
# الوظائف المنتهية أيضًا
jobs -a
fg و bg
# وضع في المقدمة
fg
fg %1 # رقم الوظيفة 1
fg %nom # وظيفة بالاسم
# وضع في الخلفية
bg
bg %1
disown - فصل وظيفة
# فصل عن الطرفية
disown %1
disown -h %1 # عدم إرسال SIGHUP
أمثلة عملية
السيناريو 1: عملية لا تستجيب
# 1. العثور على PID
ps aux | grep processus
# 2. محاولة بلطف
kill PID
# 3. الانتظار لبضع ثوان
sleep 5
# 4. إذا كانت لا تزال موجودة، إجبار
kill -9 PID
السيناريو 2: عملية في الخلفية
# بدء في الخلفية
long_script.sh &
# عرض الوظائف
jobs
# وضع في المقدمة
fg %1
# تعليق (Ctrl+Z)
# استئناف في الخلفية
bg %1
السيناريو 3: عملية تستمر بعد قطع الاتصال
# باستخدام nohup
nohup long_task.sh > output.log 2>&1 &
# أو باستخدام screen/tmux
screen -S session
# بدء العملية
# فصل: Ctrl+A ثم D
# إعادة الاتصال: screen -r session
الإشارات واستخدامها
SIGTERM (15) - إنهاء بلطف
kill -TERM PID
# يمكن للعملية:
# - حفظ البيانات
# - إغلاق الملفات
# - تنظيف الموارد
SIGKILL (9) - إنهاء إجباري
kill -9 PID
# العملية:
# - لا يمكن تجاهلها
# - تُقتل فورًا
# - لا يمكن التنظيف
استخدم فقط إذا لم يعمل SIGTERM!
SIGHUP (1) - إعادة تحميل التكوين
# غالبًا ما يستخدم لإعادة تحميل التكوين
kill -HUP PID
# مثال: إعادة تحميل nginx
kill -HUP $(pidof nginx)
ملخص
في هذا الفصل، تعلمت:
بدء: commande، commande &، nohup
إيقاف: kill، killall، pkill مع الإشارات
الإشارات: TERM (بلطف)، KILL (إجباري)، HUP (إعادة تحميل)
تعليق: SIGSTOP، Ctrl+Z
استئناف: SIGCONT، fg، bg
الخلفية: jobs، fg، bg، disown
الخطوات التالية
الفصل 4.4: الأولويات وقيم Nice
الفصل 4.5: العمليات والموارد
تم إنشاء الفصل في: ديسمبر 2024