Startpagina » hoe » Wat betekent Alles is een bestand Onder Linux?

    Wat betekent Alles is een bestand Onder Linux?

    Een van de bepalende functies van Linux en andere UNIX-achtige besturingssystemen is dat "alles een bestand is." Dit is een te grote vereenvoudiging, maar inzicht in wat het betekent, zal je helpen te begrijpen hoe Linux werkt.

    Veel dingen op Linux verschijnen in uw bestandssysteem, maar het zijn geen echte bestanden. Het zijn speciale bestanden die hardwareapparaten, systeeminformatie en andere dingen vertegenwoordigen, waaronder een generator voor willekeurige getallen.

    Deze speciale bestanden kunnen zich bevinden in pseudo- of virtuele bestandssystemen zoals / dev, die speciale bestanden bevatten die apparaten vertegenwoordigen, en / proc, die speciale bestanden bevat die systeem- en procesinformatie vertegenwoordigen.

    / proc

    Laten we bijvoorbeeld zeggen dat u informatie wilt over uw CPU. De map / proc bevat een speciaal bestand - / proc / cpuinfo - dat deze informatie bevat.

    U hebt geen speciale opdracht nodig die u uw CPU-informatie vertelt - u kunt de inhoud van dit bestand lezen met elke standaardopdracht die werkt met platte-tekstbestanden. U zou bijvoorbeeld de opdracht kunnen gebruiken cat / proc / cpuinfo om de inhoud van dit bestand naar de terminal af te drukken - uw CPU-informatie afdrukken naar de terminal. U kunt zelfs / proc / cpuinfo openen in een teksteditor om de inhoud ervan te bekijken.

    Onthoud dat / proc / cpuinfo eigenlijk geen tekstbestand is met deze informatie - de Linux-kernel en het proc-bestandssysteem stellen deze informatie aan ons beschikbaar als bestand. Hierdoor kunnen we vertrouwde tools gebruiken om de informatie te bekijken en ermee te werken.

    De / proc-map bevat ook andere, soortgelijke bestanden, bijvoorbeeld:

    • / proc / uptime - Toont de uptime van uw Linux-kernel - met andere woorden, hoe lang uw systeem aan stond zonder uit te schakelen.
    • / proc / version - Blootstelling van de versie van uw Linux-kernel.

    / dev

    In de map / dev vindt u bestanden die apparaten vertegenwoordigen, maar ook bestanden die andere speciale dingen vertegenwoordigen. Bijvoorbeeld, / dev / cdrom is uw CD-ROM-station. / dev / sda staat voor je eerste harde schijf, terwijl / dev / sda1 de eerste partitie op je eerste harde schijf is.

    Wilt u uw CD-ROM monteren? Voer de opdracht mount uit en geef / dev / cdrom op als het apparaat dat u wilt koppelen. Wilt u uw eerste harde schijf partitioneren? Voer een hulpprogramma voor het partitioneren van schijven uit en geef / dev / sda op als de harde schijf die u wilt bewerken. Wil je de eerste partitie op je eerste harde schijf formatteren? Voer een opmaakopdracht uit en vertel deze om / dev / sda1 te formatteren.

    Zoals u ziet, heeft het gebruik van deze apparaten als onderdeel van het bestandssysteem voordelen. Het bestandssysteem biedt een consistente "naamruimte" die alle toepassingen kunnen gebruiken om toegang te krijgen tot de apparaten.

    / dev / null, / dev / random, en / dev / zero

    Het / dev-bestandssysteem bevat niet alleen bestanden die fysieke apparaten vertegenwoordigen. Hier zijn drie van de meest opvallende speciale apparaten die het bevat:

    • / dev / null - Verwijdert alle gegevens die erop zijn geschreven - denk aan een prullenbak of een zwart gat. Als je ooit een opmerking ziet waarin staat dat je klaagt aan / dev / null - dat is een nerdige manier om te zeggen "gooi ze in de vuilnisbak".
    • / dev / random - Produceert willekeur met omgevingsruis. Het is een willekeurige nummergenerator waar je op kunt letten.
    • / dev / zero - Produceert nullen - een constante stroom van nullen.

    Als u deze drie als bestanden ziet, zult u er geen gebruik van zien. Zie ze in plaats daarvan als hulpmiddelen.

    Bijvoorbeeld, standaard produceren Linux-commando's foutmeldingen en andere uitvoer die ze afdrukken naar de standaarduitvoer, gewoonlijk de terminal. Als u een opdracht wilt uitvoeren en niet om de uitvoer ervan geeft, kunt u die uitvoer omleiden naar / dev / null. Het omleiden van de uitvoer van een opdracht naar / dev / null gooit deze onmiddellijk weg. In plaats van dat elke opdracht zijn eigen "stille modus" implementeert, kunt u deze methode gebruiken met elke opdracht.

    opdracht> / dev / null

    Als u een bron van willekeur wilde hebben - bijvoorbeeld voor het genereren van een coderingssleutel, zou u uw eigen generator voor willekeurige getallen niet hoeven te schrijven - u zou / dev / random kunnen gebruiken.

    Om de inhoud van een harde schijf te wissen door er 0's aan toe te voegen, heb je geen speciaal hulpprogramma nodig om een ​​station op nul te zetten - je zou standaard hulpprogramma's en / dev / zero kunnen gebruiken. Bijvoorbeeld de dd opdracht leest vanaf een locatie en schrijft naar een andere locatie. De volgende opdracht leest nullen uit / dev / zero en schrijft deze direct naar de eerste harde schijfpartitie op uw systeem, waarbij de inhoud volledig wordt gewist.

    (Waarschuwing: Deze opdracht wist alle gegevens op uw eerste partitie als u deze uitvoert. Voer deze opdracht alleen uit als u gegevens wilt vernietigen.)

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

    Hier gebruiken we dd met speciale bestanden (/ dev / zero en / dev / sda1), maar we zouden ook dd kunnen gebruiken om van bestanden te lezen en ernaar te schrijven. Dezelfde opdracht werkt zowel voor het direct manipuleren van apparaten als het werken met bestanden.

    Verduidelijking

    In de praktijk is het juister om te zeggen dat "alles een stroom van bytes is" dan "alles is een bestand." / Dev / random is geen bestand, maar het is zeker een stroom van bytes. En hoewel deze dingen technisch gezien geen bestanden zijn, zijn ze toegankelijk in het bestandssysteem - het bestandssysteem is een universele "naamruimte" waar alles toegankelijk is. Wilt u toegang krijgen tot een generator voor willekeurige getallen of rechtstreeks vanaf een apparaat lezen? Je vindt beide in het bestandssysteem; geen andere vorm van adressering nodig.

    Sommige dingen zijn natuurlijk geen echte bestanden - processen die worden uitgevoerd op uw systeem maken geen deel uit van het bestandssysteem. "Alles is een bestand" is onnauwkeurig, maar veel dingen gedragen zich wel als bestanden.