Day 3 Linux ( Process+Package+Devices) Management
7/25/2025

7/25/2025
العملية (Process) في لينكس هي ببساطة "برنامج قيد التشغيل".
عند تشغيل أي برنامج (مثل bash
أو nmap
أو firefox
)، فإن نواة النظام (Kernel) تنشئ له عملية مستقلة وتخصص لها معرّف فريد يُسمى PID - Process ID.
ps
الناتج:
PID TTY STAT TIME CMD
41230 pts/4 Ss 00:00 bash
51224 pts/4 R+ 00:00 ps
الطرفية (Terminal) هي الواجهة التي من خلالها يُدخل المستخدم الأوامر.
إذاً:
ps
يتم تمييزها بـ ?
وغالبًا ما تكون عمليات Daemons (مثل sshd, cron).كل عملية في لينكس تنشأ عن طريق عملية موجودة مسبقًا (الأب).
fork()
لنسخ العملية الأب.execve()
لتشغيل برنامج جديد في ذاكرتها.ps -l
ستجد عمودًا اسمه PPID يمثل Parent PID، أي رقم العملية الأب.
عند انتهاء العملية، ترسل للنواة كود خروج (exit code):
0
: نجاحالنوع الوصف Zombie عملية انتهت ولكن لم تُجمع معلومات خروجها بواسطة الأب Orphan عملية لا تملك أبًا، فتتبناها العملية init
wait()
.الإشارة هي وسيلة للتواصل مع العمليات:
الإشارة الرقم المعنى SIGHUP 1 قطع الاتصال (مثلاً غلق الطرفية) SIGINT 2 إيقاف مؤقت (Ctrl+C) SIGKILL 9 قتل قاطع لا يمكن تجاهله SIGTERM 15 قتل آمن SIGSTOP إيقاف مؤقت (Ctrl+Z)
kill -SIGTERM 1234 # إنهاء آمن
kill -9 1234 # قتل غشيم
الأمر الوصف nice -n 10 command
تشغيل أمر بأولوية منخفضة renice 5 -p 1234
تعديل أولوية عملية حالية
top
ابحث عن عمود NI.
الرمز المعنى R Running أو Runnable S Sleeping (يمكن مقاطعته) D Sleeping (لا يمكن مقاطعته) Z Zombie T Stopped (موقوف مؤقتًا)
ps aux
راقب عمود STAT.
كل عملية في لينكس يتم تمثيلها داخل مجلد /proc/PID/
ls /proc/1234/
cat /proc/1234/status
من هنا يمكنك استخراج معلومات العمليات بدقة:
هذا مفيد جدًا في الفحص الجنائي والتحقيق في الأنظمة المتعرضة لهجمات.
عند تشغيل أمر يستغرق وقتًا طويلًا، يمكنك:
command &
تشغيل الأمر في الخلفيةjobs
عرض الوظائف في الخلفية fg %1
إرجاع الوظيفة رقم 1 إلى الواجهة bg %1
إرسال الوظيفة رقم 1 إلى الخلفية kill %1
قتل الوظيفة رقم 1sleep 1000 & # تشغيل في الخلفية
jobs # عرض جميع الخلفيات
fg %1 # إعادة الوظيفة الأولى
-----------------------------------------------------------------------------
الحزم هي ببساطة تجميع لعدد كبير من الملفات الضرورية لتشغيل برنامج معين. مثلًا متصفح Chrome أو برنامج VLC هما عبارة عن حزم. هذه الحزم تحتوي على ملفات تنفيذية، مكتبات، ملفات تكوين، وأحيانًا سكريبتات مساعدة.
هم المطورون الذين يكتبون الكود الأساسي للبرنامج.
هم الذين يأخذون هذا الكود ويقومون بتغليفه في حزمة مناسبة (DEB أو RPM) ويضيفونه إلى مستودعات التوزيعة.
مستودعات الحزم هي خوادم على الإنترنت تحتوي على آلاف الحزم الجاهزة للتثبيت.
📌 الملف الرئيسي الذي يحتوي على روابط هذه المستودعات في توزيعات ديبيان هو:
/etc/apt/sources.list
يمكنك إضافة مستودعات خارجية من شركات مثل Google أو Discord، ليتمكن نظامك من جلب الحزم منها مباشرة.
gzip file.txt
gunzip file.txt.gz
tar cvf archive.tar file1 file2
tar xvf archive.tar # لفك الضغط
tar czf archive.tar.gz file1 file2
tar xzf archive.tar.gz
🧠 تذكير: x
للفك، z
لاستخدام gzip، f
لتحديد الملف.
معظم البرامج لا تعمل وحدها، بل تعتمد على مكتبات أو برامج أخرى. لذلك، عند تثبيت حزمة، يجب أن تُثبت أيضًا تبعياتها. هذا ما يميز مديري الحزم مثل apt
و yum
عن أدوات مثل dpkg
و rpm
التي لا تدير التبعيات.
dpkg -i package.deb # ديبيان
rpm -i package.rpm # ريدهات
dpkg -r package_name
rpm -e package_name
dpkg -l
rpm -qa
⚠️ ملاحظة: dpkg
و rpm
لا يتحققان من التبعيات، لذا يمكن أن تفشل بعض التثبيتات أو تبقى غير مكتملة.
apt install package
yum install package
apt remove package
yum erase package
apt update # تحديث ال source list
apt upgrade # تحديث الادوات
yum update
apt show package
yum info package
بعض البرامج لا تتوفر كحزمة جاهزة، وتحتاج إلى ترجمتها يدويًا.
sudo apt install build-essential
tar -xzvf program.tar.gz
./configure
make
sudo make install
sudo make uninstall
⚠️ خطر: make install
لا يتتبع كل ما يقوم بتثبيته، مما يجعل إلغاء التثبيت صعبًا.
sudo checkinstall
سيُنشئ لك ملف .deb لتثبيته وإزالته بسهولة لاحقًا.
------------------------------------------------------------------------
عند توصيل أي جهاز بجهازك (مثل فلاش، قرص صلب، طابعة...) يحتاج النظام لتعريف (driver) لكي يتمكن من استخدامه. هذا التعريف يمكن التفاعل معه عن طريق ملف خاص يُسمى ملف الجهاز (Device File) أو Node.
📁 جميع ملفات الأجهزة تُخزن في مجلد /dev
.
📌 مثال:
ls /dev
ستلاحظ وجود الكثير من الملفات، مثل:
/dev/null
: جهاز وهمي يمسح أي شيء يُرسل إليه./dev/sda
: يشير إلى أول قرص صلب.في الماضي كانت ملفات /dev
تُنشأ يدويًا، لكن مع الوقت أصبحت هذه الطريقة غير عملية، فظهرت آليات حديثة مثل udev
للتعامل الديناميكي مع الأجهزة (سنشرحها لاحقًا).
عند تنفيذ الأمر ls -l /dev
ستلاحظ رموز في بداية كل سطر تحدد نوع الجهاز:
الرمز النوع الوصف c Character Device ترسل وتستقبل البيانات حرفًا بحرف (مثل لوحة المفاتيح، /dev/null
) b Block Device ترسل وتستقبل البيانات على شكل كتل (مثل الأقراص الصلبة) p Pipe Device قنوات تواصل بين العمليات (processes) مثل FIFO s Socket Device مشابهة للـ pipe لكن تسمح بالتواصل بين عمليات متعددة (مثل الـ sockets)
كل ملف جهاز له رقمين:
brw-rw---- 1 root disk 8, 0 /dev/sda
/dev/sda
→ أول قرص صلب/dev/sda3
→ القسم الثالث في القرص الأول/dev/hda
→ أول قرص IDE (قديم)/dev/hdd2
→ القسم الثاني في القرص الرابع/dev/null
→ يمسح كل ما يُرسل له./dev/zero
→ يولد بايتات بقيمة صفر./dev/random
→ يولد أرقام عشوائية.lsusb
lspci
lsscsi
dd
:
هي أداة قوية جدًا تُستخدم لنسخ البيانات بين الملفات والأجهزة.
dd if=/home/pete/backup.img of=/dev/sdb bs=1024
dd
قوية جدًا، خطأ بسيط مثل عكس if
و of
قد يمسح قرصًا كاملاً.
/dev
يحتوي على ملفات الجهاز للتفاعل معها مباشرًا/sys
يعرض معلومات تفصيلية عن الأجهزة udev
يُدير ملفات /dev
بشكل ديناميكي udevadm
يعرض معلومات عن الأجهزة lsusb/lspci/lsscsi
أدوات لعرض أنواع مختلفة من الأجهزة dd
أداة لنسخ البيانات بين الملفات والأجهزة بشكل خام