الصفحة الرئيسية » howto » ماذا يعني كل شيء هو ملف يعني في لينكس؟

    ماذا يعني كل شيء هو ملف يعني في لينكس؟

    واحدة من السمات المميزة لـ Linux وأنظمة التشغيل الأخرى المشابهة لـ UNIX هي أن "كل شيء هو ملف." هذا هو تبسيط مفرط ، ولكن فهم ما يعنيه سيساعدك على فهم كيفية عمل Linux.

    تظهر العديد من الأشياء على نظام التشغيل Linux في نظام الملفات ، ولكنها ليست ملفات في الواقع. إنها ملفات خاصة تمثل الأجهزة ، ومعلومات النظام ، وأشياء أخرى - بما في ذلك مولد أرقام عشوائي.

    قد تكون هذه الملفات الخاصة موجودة في أنظمة ملفات افتراضية أو زائفة مثل / dev ، والتي تحتوي على ملفات خاصة تمثل الأجهزة و / proc ، والتي تحتوي على ملفات خاصة تمثل معلومات النظام والمعالجة..

    / إجراءات

    على سبيل المثال ، لنفترض أنك تريد البحث عن معلومات حول وحدة المعالجة المركزية. يحتوي الدليل / proc على ملف خاص - / proc / cpuinfo - يحتوي على هذه المعلومات.

    لا تحتاج إلى أمر خاص يخبرك بمعلومات وحدة المعالجة المركزية (CPU) - يمكنك فقط قراءة محتويات هذا الملف باستخدام أي أمر قياسي يعمل مع ملفات النص العادي. على سبيل المثال ، يمكنك استخدام الأمر cat / proc / cpuinfo لطباعة محتويات هذا الملف إلى المحطة - قم بطباعة معلومات وحدة المعالجة المركزية الخاصة بك إلى الجهاز. يمكنك حتى فتح / proc / cpuinfo في محرر نصوص لعرض محتوياته.

    تذكر ، / proc / cpuinfo ليس في الواقع ملفًا نصيًا يحتوي على هذه المعلومات - يقوم نظام Linux kernel ونظام ملفات proc بتعريض هذه المعلومات إلينا كملف. يتيح لنا هذا استخدام أدوات مألوفة لعرض المعلومات والعمل معها.

    يحتوي الدليل / proc أيضًا على ملفات مشابهة أخرى ، على سبيل المثال:

    • / proc / uptime - يعرض وقت تشغيل نواة لينكس الخاص بك - وبعبارة أخرى ، كم من الوقت تم تشغيل النظام الخاص بك دون إيقاف التشغيل.
    • / proc / version - يعرض إصدار إصدار Linux kernel الخاص بك.

    / ديف

    في دليل / dev ، ستجد الملفات التي تمثل الأجهزة - وكذلك الملفات التي تمثل أشياء خاصة أخرى. على سبيل المثال ، / dev / cdrom هو محرك الأقراص المضغوطة. يمثل / dev / sda محرك الأقراص الثابت الأول ، بينما يمثل / dev / sda1 القسم الأول على محرك الأقراص الثابت الأول.

    تريد تركيب القرص المضغوط الخاص بك؟ قم بتشغيل الأمر mount وحدد / dev / cdrom مثل الجهاز الذي تريد تحميله. تريد تقسيم القرص الصلب الأول الخاص بك؟ قم بتشغيل الأداة المساعدة لتقسيم القرص وحدد / dev / sda مثل القرص الثابت الذي تريد تحريره. تريد تهيئة القسم الأول على القرص الصلب الأول الخاص بك؟ قم بتشغيل أمر التنسيق وأخبره بالتنسيق / dev / sda1.

    كما ترون ، فإن فضح هذه الأجهزة كجزء من نظام الملفات له مميزاته. يوفر نظام الملفات "مساحة اسم" متسقة يمكن لجميع التطبيقات استخدامها للتعامل مع الأجهزة والوصول إليها.

    / dev / null و / dev / random و / dev / zero

    لا يحتوي نظام ملفات dev فقط على الملفات التي تمثل الأجهزة المادية. إليك ثلاثة من أهم الأجهزة الخاصة التي تحتوي عليها:

    • / dev / null - يتجاهل جميع البيانات المكتوبة إليه - فكّر فيها على أنها سلة مهملات أو ثقب أسود. إذا رأيت في أي وقت تعليقًا يطلب منك إرسال شكوى إلى / dev / null - فهذه طريقة مبتكرة تقول "ارميها في سلة المهملات".
    • / dev / random - ينتج العشوائية باستخدام الضوضاء البيئية. إنه مولد رقم عشوائي يمكنك النقر عليه.
    • / dev / zero - ينتج أصفار - دفق ثابت من الأصفار.

    إذا كنت تفكر في هذه الملفات الثلاثة ، فلن ترى استخدامًا لها. بدلا من ذلك ، فكر فيها كأدوات.

    على سبيل المثال ، بشكل افتراضي ، تصدر أوامر Linux رسائل خطأ ومخرجات أخرى يتم طباعتها إلى المخرج القياسي ، عادةً ما تكون المحطة الطرفية. إذا كنت تريد تشغيل أمر ولا تهتم بالناتج ، يمكنك إعادة توجيه هذا الإخراج إلى / dev / null. إعادة توجيه إخراج الأمر إلى / dev / null يتجاهلها فورًا. بدلاً من استخدام كل أمر لتنفيذ "الوضع الهادئ" الخاص بك ، يمكنك استخدام هذه الطريقة مع أي أمر.

    الأمر> / dev / null

    إذا كنت تريد مصدرًا عشوائيًا - لنفترض مثلاً أنك أنتجت مفتاح تشفير ، فلن تحتاج إلى كتابة مولد رقم عشوائي - يمكنك استخدام / dev / random.

    لمحو محتويات محرك الأقراص الثابت بكتابة 0's إليه ، لن تحتاج إلى أداة مساعدة خاصة مخصصة لصفر محرك - يمكنك استخدام الأدوات المساعدة القياسية و / dev / صفر. على سبيل المثال ، دد يقرأ الأمر من موقع ويكتب إلى موقع آخر. يقوم الأمر التالي بقراءة الأصفار من / dev / zero وكتابتها مباشرة إلى قسم القرص الثابت الأول على النظام الخاص بك ، محو محتوياتها بالكامل.

    (تحذير: سيؤدي هذا الأمر إلى مسح كافة البيانات الموجودة على القسم الأول إذا قمت بتشغيلها. قم بتشغيل هذا الأمر فقط إذا كنت تريد تدمير البيانات.)

    dd if = / dev / zero of = / dev / sda1

    نحن هنا نستخدم dd مع ملفات خاصة (/ dev / zero و / dev / sda1) ، ولكن يمكننا أيضًا استخدام dd للقراءة والكتابة إلى الملفات الفعلية. يعمل نفس الأمر على معالجة الأجهزة مباشرة والعمل مع الملفات.

    توضيح

    من الناحية العملية ، من الدقة أن نقول إن "كل شيء عبارة عن دفق من البايتات" من "كل شيء هو ملف." / dev / random ليس ملفًا ، ولكنه بالتأكيد عبارة عن تدفق للبايتات. وعلى الرغم من أن هذه الأشياء من الناحية الفنية ليست ملفات ، إلا أنه يمكن الوصول إليها في نظام الملفات - نظام الملفات عبارة عن "مساحة اسم" عالمية حيث يمكن الوصول إلى كل شيء. تريد الوصول إلى مولد رقم عشوائي أو قراءة مباشرة من جهاز؟ ستجد كلاهما في نظام الملفات ؛ لا يوجد شكل آخر من أشكال العنونة اللازمة.

    بالطبع ، بعض الأشياء ليست في الواقع ملفات - العمليات التي تعمل على نظامك ليست جزءًا من نظام الملفات. "كل شيء ملف" غير دقيق ، ولكن الكثير من الأشياء تتصرف كملفات.