هيكلية ملفات لينكس (Filesystem Hierarchy Standard - FHS)


هيكلية ملفات لينكس (Filesystem Hierarchy Standard - FHS)

يا هلا بالشباب! اليوم بنتكلم عن موضوع أساسي جداً لأي حد بيتعامل مع لينكس: هيكلية الملفات أو اللي نسميها Filesystem Hierarchy Standard (FHS). دي مش مجرد ترتيب عشوائي، دي قاعدة قياسية كل توزيعات لينكس بتلتزم بيها عشان تعرف كل حاجة مكانها فين بالظبط. تخيلها خريطة طريق لنظام التشغيل بتاعك.

الفكرة بسيطة: كل ملف أو مجلد له مكان محدد ووظيفة معينة. معرفة الأماكن دي بتسهل عليك الشغل، استكشاف الأخطاء، وحتى تطوير البرامج.

المجلدات الرئيسية وشرحها

يلا بينا نستعرض أهم المجلدات اللي لازم تكون عارفها:

/ - الجذر (Root Directory)

ده المجلد الأساسي، أو الأب لكل المجلدات والملفات التانية. كل حاجة في لينكس بتبدأ من هنا. لما تشوف المسار /home/user/document.txt، ده معناه إنه جوه مجلد home اللي جوه الجذر، وهكذا.

/bin - البرامج الأساسية (User Binaries)

هنا بتلاقي الأوامر الأساسية اللي بيستخدمها كل المستخدمين، زي ls، cp، mv، cat. دي برامج ضرورية عشان النظام يشتغل ويقدر المستخدمين العاديين يستخدموها.

/sbin - برامج إدارة النظام (System Binaries)

زي /bin بس دي أوامر خاصة بالمسؤول (root) لإدارة النظام، زي fdisk، ip، shutdown. مش أي حد يقدر يستخدمها عادةً.

/etc - ملفات الإعدادات (Configuration Files)

ده كنز الإعدادات! كل ملفات الكونفيج (configuration files) بتاعت البرامج والنظام هتلاقيها هنا. مثلاً، إعدادات الشبكة، المستخدمين، الخدمات، كل ده في /etc. لو عايز تغير حاجة في سلوك النظام أو برنامج، غالباً هتدور هنا.

ملاحظة: ملفات الإعدادات هنا بتكون ملفات نصية عادية، تقدر تعدلها بأي محرر نصوص.

/dev - الأجهزة (Device Files)

هنا كل الأجهزة المتصلة بالنظام بيتم تمثيلها كملفات. الهارد ديسك، الفلاشة، الطابعة، الكيبورد، كل حاجة ليها ملف هنا. مثلاً، الهارد ديسك الأول بيكون /dev/sda.

/proc - معلومات العمليات والنظام (Process Information Virtual Filesystem)

ده مجلد افتراضي (مش موجود فعلياً على الهارد ديسك) بيحتوي على معلومات حية عن العمليات اللي شغالة والنظام نفسه. مثلاً، معلومات عن الـ CPU، الذاكرة، وكل عملية ليها مجلد خاص بيها هنا. مفيد جداً للمراقبة واستكشاف الأخطاء.

/sys - معلومات الأجهزة (System Information Virtual Filesystem)

برضو مجلد افتراضي، بيوفر واجهة للوصول لمعلومات وإعدادات الكيرنل (kernel) والأجهزة المتصلة بطريقة منظمة أكتر من /proc في بعض الجوانب. بيستخدمه الكيرنل لإدارة الأجهزة.

/var - الملفات المتغيرة (Variable Data Files)

المجلد ده بيحتوي على الملفات اللي حجمها بيتغير باستمرار، زي ملفات السجلات (logs) في /var/log، قواعد البيانات، ملفات البريد في /var/mail، وملفات الويب سيرفر في /var/www (أو /srv/www أحياناً). مهم جداً لمراقبة النظام.

/tmp - الملفات المؤقتة (Temporary Files)

زي اسمه بالظبط، أي ملفات مؤقتة بتنشئها البرامج أو المستخدمين بتتحط هنا. محتوياته بتتمسح عادةً لما تعمل إعادة تشغيل للنظام.

نصيحة: لا تحفظ ملفات مهمة في /tmp لأنها ممكن تتمسح في أي وقت.

/usr - برامج وموارد المستخدمين (Unix System Resources)

ده واحد من أكبر المجلدات. بيحتوي على معظم البرامج والمكتبات والوثائق اللي بيستخدمها المستخدمون. تخيلها كـ "userland" أو بيئة المستخدم. جواه هتلاقي مجلدات زي:

  • /usr/bin: برامج إضافية للمستخدمين.
  • /usr/sbin: برامج إضافية لإدارة النظام.
  • /usr/lib: مكتبات برمجية.
  • /usr/local: للبرامج اللي بتثبتها يدوياً (مش من مدير الحزم).
  • /usr/share: ملفات مشتركة زي الوثائق، أيقونات، خطوط.

/home - مجلدات المستخدمين (User Home Directories)

هنا كل مستخدم له مجلد خاص بيه. لما تسجل دخول، بتكون في مجلدك الشخصي ده. مثلاً، لو اسم المستخدم ahmed، هيكون مجلده /home/ahmed. ده المكان اللي بتحفظ فيه ملفاتك الشخصية، صورك، مستنداتك، وإعدادات برامجك الخاصة.

مثال على التحقق من المجلد الحالي:

pwd

/opt - برامج اختيارية (Optional Software)

المجلد ده مخصص لتثبيت برامج الطرف الثالث (third-party software) اللي مش بتكون جزء من توزيعة لينكس الأساسية. غالباً بتكون برامج كبيرة ليها كل ملفاتها في مجلد واحد هنا، زي تطبيقات Oracle أو Google Chrome.

/mnt و /media - نقاط التثبيت (Mount Points)

  • /mnt: مجلد تقليدي لتثبيت أنظمة ملفات مؤقتة يدوياً، زي شبكة تخزين (NFS) أو هارد ديسك خارجي.
  • /media: مخصص لتثبيت الأجهزة القابلة للإزالة تلقائياً، زي الفلاشات، الـ CD/DVD، أو الكروت الميموري. لما تحط فلاشة، غالباً هتلاقيها هنا.

/boot - ملفات الإقلاع (Boot Loader Files)

هنا بتلاقي كل الملفات اللي بيحتاجها النظام عشان يشتغل، زي الكيرنل (kernel) وملفات الـ GRUB (برنامج الإقلاع). لو المجلد ده حصل فيه مشكلة، النظام مش هيشتغل.

/lib و /lib64 - المكتبات الأساسية (Essential Shared Libraries)

دي بتضم المكتبات البرمجية الأساسية اللي بتحتاجها البرامج في /bin و /sbin عشان تشتغل. /lib64 بيكون للأنظمة 64-بت.

ليه FHS مهمة؟

معرفة FHS بتخليك:

  • فاهم النظام: تعرف فين تدور على ملف معين، أو فين تحط ملفاتك.
  • أسهل في الإدارة: استكشاف الأخطاء، إدارة الخدمات، وتثبيت البرامج بيكون أسهل بكتير.
  • متوافق: البرامج مكتوبة بافتراض إنها هتلاقي حاجاتها في أماكن معينة حسب FHS، فده بيضمن التوافقية.

وبس كده! دي كانت نظرة سريعة على FHS وأهم المجلدات فيها. لما تكون فاهم الهيكلية دي، هتلاقي إن التعامل مع لينكس بقى أمتع وأسهل بكتير. بالتوفيق!