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.gztar 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_namedpkg -l
rpm -qa⚠️ ملاحظة: dpkg و rpm لا يتحققان من التبعيات، لذا يمكن أن تفشل بعض التثبيتات أو تبقى غير مكتملة.
apt install package
yum install packageapt remove package
yum erase packageapt update # تحديث ال source list
apt upgrade # تحديث الادوات
yum update apt show package
yum info packageبعض البرامج لا تتوفر كحزمة جاهزة، وتحتاج إلى ترجمتها يدويًا.
sudo apt install build-essentialtar -xzvf program.tar.gz./configuremakesudo make installsudo 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 → يولد أرقام عشوائية.lsusblspcilsscsidd :
هي أداة قوية جدًا تُستخدم لنسخ البيانات بين الملفات والأجهزة.
dd if=/home/pete/backup.img of=/dev/sdb bs=1024dd قوية جدًا، خطأ بسيط مثل عكس if و of قد يمسح قرصًا كاملاً.
/dev يحتوي على ملفات الجهاز للتفاعل معها مباشرًا/sys يعرض معلومات تفصيلية عن الأجهزة udev يُدير ملفات /dev بشكل ديناميكي udevadm يعرض معلومات عن الأجهزة lsusb/lspci/lsscsi أدوات لعرض أنواع مختلفة من الأجهزة dd أداة لنسخ البيانات بين الملفات والأجهزة بشكل خام