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

الفصل 4.6 - الوظائف والمهام في الخلفية

أهداف التعلم​

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

  • بدء العمليات في الخلفية
  • إدارة الوظائف باستخدام jobs، fg، bg
  • استخدام nohup للعمليات المستمرة
  • فهم screen و tmux
  • إدارة العمليات بعد تسجيل الخروج

العمليات في الخلفية​

البدء باستخدام &​

# عملية في الخلفية
commande &

# مثال
sleep 60 &
tail -f /var/log/app.log &

# رؤية PID
echo $! # PID لآخر عملية في الخلفية

إعادة التوجيه​

# إعادة توجيه الخرج
commande > output.log 2>&1 &

# تجاهل الخرج
commande > /dev/null 2>&1 &

# مثال
long_script.sh > script.log 2>&1 &

إدارة الوظائف​

jobs - رؤية الوظائف​

# قائمة الوظائف
jobs

# مع PIDs
jobs -l

# الوظائف المنتهية أيضًا
jobs -a

# الصيغة:
# [1] + running sleep 60 &
# [2] - running tail -f log &
# الرقم، الحالة، الأمر

fg - في المقدمة​

# آخر وظيفة في المقدمة
fg

# وظيفة محددة
fg %1
fg %2
fg %nom

# باستخدام Ctrl+Z، يتم تعليق العملية
# ثم fg يعيدها إلى المقدمة

bg - في الخلفية​

# آخر وظيفة معلقة في الخلفية
bg

# وظيفة محددة
bg %1
bg %2

nohup - تجاهل SIGHUP​

المشكلة​

عند تسجيل الخروج، يرسل shell إشارة SIGHUP إلى جميع العمليات التابعة له، مما يؤدي إلى قتلها.

الحل: nohup​

# تجاهل SIGHUP
nohup commande &

# مع إعادة التوجيه
nohup commande > output.log 2>&1 &

# يتم إنشاء ملف nohup.out تلقائيًا
# إذا لم يكن هناك إعادة توجيه

الخصائص:

  • تستمر العملية بعد تسجيل الخروج
  • الخرج في nohup.out (افتراضيًا)
  • يمكن إعادة توجيهه

screen - الجلسات المستمرة​

التثبيت​

sudo apt install screen  # Ubuntu/Debian
sudo yum install screen # Red Hat/CentOS

الاستخدام الأساسي​

# بدء جلسة
screen
screen -S nom_session # مع اسم

# فصل: Ctrl+A ثم D
# إعادة الاتصال: screen -r
# إعادة الاتصال بجلسة مسماة: screen -r nom_session

# قائمة الجلسات
screen -ls

# قتل الجلسة
screen -X -S nom_session quit

أوامر screen (Ctrl+A)​

Ctrl+A ثم:
d # فصل
c # نافذة جديدة
n # النافذة التالية
p # النافذة السابقة
" # قائمة النوافذ
? # مساعدة

tmux - موازن طرفية حديث​

التثبيت​

sudo apt install tmux  # Ubuntu/Debian
sudo yum install tmux # Red Hat/CentOS

الاستخدام الأساسي​

# بدء جلسة
tmux
tmux new -s nom_session

# فصل: Ctrl+B ثم D
# إعادة الاتصال: tmux attach
# إعادة الاتصال بجلسة: tmux attach -t nom_session

# قائمة الجلسات
tmux ls

# قتل الجلسة
tmux kill-session -t nom_session

أوامر tmux (Ctrl+B)​

Ctrl+B ثم:
d # فصل
c # نافذة جديدة
n # النافذة التالية
p # النافذة السابقة
% # تقسيم عمودي
" # تقسيم أفقي
? # مساعدة

المقارنة​

الأداةالاستخدامالمزايا
&خلفية بسيطةبسيط، سريع
nohupعمليات مستمرةيستمر بعد تسجيل الخروج
screenجلسات طرفيةنوافذ متعددة، قابل للفصل
tmuxطرفية حديثةميزات أكثر من screen

أمثلة عملية​

السيناريو 1: سكريبت طويل​

# بدء في الخلفية باستخدام nohup
nohup long_script.sh > script.log 2>&1 &

# تسجيل الخروج
# يستمر السكريبت

السيناريو 2: جلسة عمل​

# بدء screen
screen -S travail

# تشغيل عدة أوامر
# فصل: Ctrl+A D

# إعادة الاتصال لاحقًا
screen -r travail

السيناريو 3: مراقبة مستمرة​

# في screen/tmux
watch -n 1 'ps aux --sort=-%cpu | head'

# فصل وإعادة الاتصال عند الحاجة

ملخص​

في هذا الفصل، تعلمت:

الخلفية: commande & لبدء في الخلفية
الوظائف: jobs، fg، bg لإدارة الوظائف
nohup: تجاهل SIGHUP، عمليات مستمرة
screen: جلسات طرفية قابلة للفصل
tmux: موازن طرفية حديث
عملي: اختر حسب الاحتياجات (بسيط مقابل جلسات)


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

الوحدة 5: المستخدمون والأذونات
الوحدة 6: سكريبتات shell


تم إنشاء الفصل في: ديسمبر 2024