मुखपृष्ठ » कैसे » लिनक्स में सब कुछ एक फाइल है क्या मतलब है?

    लिनक्स में सब कुछ एक फाइल है क्या मतलब है?

    लिनक्स और अन्य यूनिक्स-जैसे ऑपरेटिंग सिस्टम की परिभाषित विशेषताओं में से एक यह है कि "सब कुछ एक फ़ाइल है।" यह एक निरीक्षण है, लेकिन इसका क्या अर्थ है यह समझने में मदद मिलेगी कि लिनक्स कैसे काम करता है.

    लिनक्स पर कई चीजें आपके फाइल सिस्टम में दिखाई देती हैं, लेकिन वे वास्तव में फाइलें नहीं हैं। वे विशेष फाइलें हैं जो हार्डवेयर डिवाइस, सिस्टम की जानकारी और अन्य चीजों का प्रतिनिधित्व करती हैं - जिसमें एक यादृच्छिक संख्या जनरेटर भी शामिल है.

    ये विशेष फाइलें छद्म या वर्चुअल फाइल सिस्टम जैसे / dev में स्थित हो सकती हैं, जिसमें विशेष फाइलें होती हैं जो उपकरणों का प्रतिनिधित्व करती हैं, और / proc, जिसमें विशेष फाइलें होती हैं जो सिस्टम और प्रक्रिया की जानकारी का प्रतिनिधित्व करती हैं.

    / proc

    उदाहरण के लिए, मान लें कि आप अपने CPU के बारे में जानकारी प्राप्त करना चाहते हैं। / Proc निर्देशिका में एक विशेष फ़ाइल होती है - / proc / cpuinfo - जिसमें यह जानकारी होती है.

    आपको एक विशेष कमांड की आवश्यकता नहीं है जो आपको अपनी सीपीयू जानकारी बताता है - आप इस फाइल की सामग्री को किसी भी मानक कमांड का उपयोग करके पढ़ सकते हैं जो सादे-पाठ फ़ाइलों के साथ काम करता है। उदाहरण के लिए, आप कमांड का उपयोग कर सकते हैं cat / proc / cpuinfo इस फ़ाइल की सामग्री को टर्मिनल पर प्रिंट करने के लिए - अपनी सीपीयू जानकारी को टर्मिनल पर प्रिंट करना। आप इसकी सामग्री को देखने के लिए किसी टेक्स्ट एडिटर में भी / proc / cpuinfo खोल सकते हैं.

    याद रखें, / proc / cpuinfo वास्तव में एक पाठ फ़ाइल नहीं है जिसमें यह जानकारी है - लिनक्स कर्नेल और proc फाइल सिस्टम इस जानकारी को एक फाइल के रूप में हमारे सामने ला रहा है। यह हमें जानकारी के साथ देखने और काम करने के लिए परिचित उपकरणों का उपयोग करने की अनुमति देता है.

    उदाहरण के लिए / proc निर्देशिका में अन्य समान फ़ाइलें भी शामिल हैं:

    • / proc / uptime - आपके लिनक्स कर्नेल के अपटाइम का निपटान करता है - दूसरे शब्दों में, आपका सिस्टम बिना शट डाउन किए कितने समय से है.
    • / proc / संस्करण - आपके लिनक्स कर्नेल के संस्करण को उजागर करता है.

    / dev

    / Dev निर्देशिका में, आपको ऐसी फ़ाइलें मिलेंगी जो उपकरणों का प्रतिनिधित्व करती हैं - साथ ही ऐसी फाइलें जो अन्य विशेष चीजों का प्रतिनिधित्व करती हैं। उदाहरण के लिए, / dev / cdrom आपकी CD-ROM ड्राइव है। / dev / sda आपकी पहली हार्ड ड्राइव का प्रतिनिधित्व करता है, जबकि / dev / sda1 आपकी पहली हार्ड ड्राइव पर पहले विभाजन का प्रतिनिधित्व करता है.

    अपनी CD-ROM माउंट करना चाहते हैं? माउंट कमांड चलाएं और जिस डिवाइस को आप माउंट करना चाहते हैं उसे निर्दिष्ट करें। अपनी पहली हार्ड ड्राइव को विभाजित करना चाहते हैं? डिस्क-विभाजन उपयोगिता को चलाएं और जिस हार्ड डिस्क को आप संपादित करना चाहते हैं उसे निर्दिष्ट करें। अपनी पहली हार्ड ड्राइव पर पहले विभाजन को प्रारूपित करना चाहते हैं? एक प्रारूपण आदेश चलाएँ और इसे प्रारूप / dev / sda1 को बताएं.

    जैसा कि आप देख सकते हैं, फ़ाइल सिस्टम के हिस्से के रूप में इन उपकरणों को उजागर करने के अपने फायदे हैं। फ़ाइल सिस्टम एक सुसंगत "नाम स्थान" प्रदान करता है जिसका उपयोग सभी एप्लिकेशन डिवाइसों को संबोधित करने और उन तक पहुंचने के लिए कर सकते हैं.

    / देव / शून्य, / देव / यादृच्छिक, और / देव / शून्य

    / Dev फ़ाइल सिस्टम में केवल वे फ़ाइलें नहीं होती हैं जो भौतिक उपकरणों का प्रतिनिधित्व करती हैं। यहाँ सबसे उल्लेखनीय विशेष उपकरणों में से तीन हैं:

    • / dev / null - इसमें लिखे गए सभी डेटा को छोड़ देता है - इसे कचरे या ब्लैक होल के रूप में सोच सकते हैं। यदि आप कभी भी एक टिप्पणी देखते हैं जो आपको शिकायत भेजती है / देव / अशक्त है - तो यह कहने का एक अजीब तरीका है कि "उन्हें कचरे में फेंक दें।"
    • / देव / यादृच्छिक - पर्यावरणीय शोर का उपयोग कर यादृच्छिकता पैदा करता है। यह एक यादृच्छिक संख्या जनरेटर है जिसे आप टैप कर सकते हैं.
    • / देव / शून्य - शून्य उत्पन्न करता है - शून्य की एक निरंतर धारा.

    यदि आप इन तीनों को फ़ाइलों के रूप में सोचते हैं, तो आप उनके लिए उपयोग नहीं देखेंगे। इसके बजाय, उन्हें उपकरण के रूप में सोचें.

    उदाहरण के लिए, डिफ़ॉल्ट रूप से, लिनक्स कमांड्स त्रुटि संदेश और अन्य आउटपुट उत्पन्न करते हैं जो वे मानक आउटपुट पर प्रिंट करते हैं, आमतौर पर टर्मिनल। यदि आप एक कमांड चलाना चाहते हैं और इसके आउटपुट की परवाह नहीं करते हैं, तो आप उस आउटपुट को / dev / null में रीडायरेक्ट कर सकते हैं। कमांड के आउटपुट को / dev / null में रिडायरेक्ट करने से वह तुरंत छूट जाता है। हर कमांड को अपने "शांत मोड" पर लागू करने के बजाय, आप इस विधि का उपयोग किसी भी कमांड के साथ कर सकते हैं.

    कमांड> / देव / अशक्त

    यदि आप यादृच्छिकता का स्रोत चाहते हैं - कहिए, एन्क्रिप्शन कुंजी बनाने के लिए, आपको अपना खुद का यादृच्छिक संख्या जनरेटर लिखने की आवश्यकता नहीं होगी - आप / देव / यादृच्छिक का उपयोग कर सकते हैं.

    किसी हार्ड ड्राइव की सामग्री को 0 से लिखकर मिटाने के लिए, आपको ड्राइव को शून्य करने के लिए समर्पित एक विशेष उपयोगिता की आवश्यकता नहीं है - आप मानक उपयोगिताओं और / देव / शून्य का उपयोग कर सकते हैं। उदाहरण के लिए, dd कमांड एक स्थान से पढ़ता है और दूसरे स्थान पर लिखता है। निम्नलिखित कमांड / देव / शून्य से शून्य पढ़ेंगे और उन्हें सीधे आपके सिस्टम पर पहले हार्ड डिस्क विभाजन पर लिखेंगे, पूरी तरह से उनकी सामग्री को मिटा देंगे.

    (चेतावनी: यदि आप इसे चलाते हैं तो यह कमांड आपके पहले विभाजन के सभी डेटा को मिटा देगा। यदि आप डेटा को नष्ट करना चाहते हैं तो केवल इस कमांड को चलाएं।)

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

    यहां हम dd का उपयोग विशेष फ़ाइलों (/ dev / शून्य और / dev / sda1) के साथ कर रहे हैं, लेकिन हम dd का उपयोग वास्तविक फ़ाइलों से पढ़ने और लिखने के लिए भी कर सकते हैं। एक ही कमांड सीधे उपकरणों में हेरफेर करने और फाइलों के साथ काम करने के लिए दोनों काम करता है.

    स्पष्टीकरण

    व्यवहार में, यह कहना अधिक सही है कि "सब कुछ बाइट्स की एक धारा है" की तुलना में "सब कुछ एक फाइल है।" / देव / यादृच्छिक एक फाइल नहीं है, लेकिन यह निश्चित रूप से बाइट्स की एक धारा है। और, हालांकि ये चीजें तकनीकी रूप से फाइलें नहीं हैं, वे फाइल सिस्टम में पहुंच योग्य हैं - फाइल सिस्टम एक सार्वभौमिक "नाम स्थान" है जहां सब कुछ सुलभ है। एक यादृच्छिक संख्या जनरेटर का उपयोग करना चाहते हैं या एक डिवाइस से सीधे पढ़ें? आपको फ़ाइल सिस्टम में दोनों मिलेंगे; किसी अन्य रूप में संबोधित करने की आवश्यकता नहीं है.

    बेशक, कुछ चीजें वास्तव में फाइलें नहीं हैं - आपके सिस्टम पर चल रही प्रक्रियाएं फाइल सिस्टम का हिस्सा नहीं हैं। "सब कुछ एक फाइल है" गलत है, लेकिन बहुत सी चीजें फाइलों के रूप में व्यवहार करती हैं.