Een van de bepalende kenmerken van Linux en andere UNIX-achtige besturingssystemen is dat “alles een bestand is”. Dit is een oversimplificatie, maar als je begrijpt wat het betekent, zul je begrijpen hoe Linux werkt.
Veel dingen op Linux verschijnen in uw bestandssysteem, maar het zijn eigenlijk geen bestanden. Het zijn speciale bestanden die hardwareapparaten, systeeminformatie en andere dingen vertegenwoordigen, inclusief een generator voor willekeurige getallen.
Deze speciale bestanden kunnen zich in pseudo of virtuele bestandssystemen bevinden, zoals / dev, dat speciale bestanden bevat die apparaten vertegenwoordigen, en / proc, dat speciale bestanden bevat die systeem- en procesinformatie vertegenwoordigen.
/ proc
Stel dat u informatie over uw CPU wilt vinden. De / proc directory bevat een speciaal bestand – / proc / cpuinfo – dat deze informatie bevat.
U hebt geen speciaal commando nodig dat u uw CPU-informatie vertelt – u kunt gewoon de inhoud van dit bestand lezen met een standaardcommando dat werkt met platte tekstbestanden. U kunt bijvoorbeeld de opdracht gebruiken cat / proc / cpuinfo om de inhoud van dit bestand naar de terminal af te drukken – uw CPU-informatie naar de terminal afdrukken. U kunt zelfs / proc / cpuinfo openen in een teksteditor om de inhoud ervan te bekijken.
Onthoud dat / proc / cpuinfo eigenlijk geen tekstbestand is dat deze informatie bevat – de Linux-kernel en het proc-bestandssysteem stellen deze informatie aan ons bloot als een bestand. Hierdoor kunnen we vertrouwde tools gebruiken om de informatie te bekijken en ermee te werken.
De map / proc bevat ook andere vergelijkbare bestanden, bijvoorbeeld:
- / proc / uptime – Geeft de uptime van uw Linux-kernel weer – met andere woorden, hoe lang uw systeem is ingeschakeld zonder af te sluiten.
- / proc / version – Geeft de versie van uw Linux-kernel weer.
/ dev
In de / dev directory vind je bestanden die apparaten vertegenwoordigen – evenals bestanden die andere speciale dingen vertegenwoordigen. / Dev / cdrom is bijvoorbeeld uw cd-rom-station. / dev / sda vertegenwoordigt uw eerste harde schijf, terwijl / dev / sda1 de eerste partitie op uw eerste harde schijf vertegenwoordigt.
Wilt u uw cd-rom mounten? Voer het mount commando uit en specificeer / dev / cdrom als het apparaat dat je wilt mounten. Wilt u uw eerste harde schijf partitioneren? Voer een hulpprogramma voor het partitioneren van schijven uit en specificeer / dev / sda als de harde schijf die u wilt bewerken. Wilt u de eerste partitie op uw eerste harde schijf formatteren? Voer een opmaakopdracht uit en vertel het om / dev / sda1 te formatteren.
Zoals u kunt zien, heeft het blootstellen van deze apparaten als onderdeel van het bestandssysteem zijn voordelen. Het bestandssysteem biedt een consistente “naamruimte” die alle toepassingen kunnen gebruiken om de apparaten aan te spreken en er toegang toe te krijgen.
/ 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 erin zijn geschreven – beschouw het als een prullenbak of een zwart gat. Als je ooit een opmerking ziet waarin je wordt verteld dat je klachten naar / dev / null moet sturen, is dat een rare manier om te zeggen “gooi ze in de prullenbak”.
- / dev / random – Produceert willekeur met omgevingsgeluid. Het is een generator voor willekeurige getallen waar u gebruik van kunt maken.
- / dev / zero – Produceert nullen – een constante stroom nullen.
Als u deze drie als bestanden beschouwt, ziet u er geen nut voor. Beschouw ze in plaats daarvan als hulpmiddelen.
Standaard produceren Linux-opdrachten bijvoorbeeld foutmeldingen en andere uitvoer die ze naar de standaarduitvoer afdrukken, normaal gesproken de terminal. Als je een commando wilt uitvoeren en niet om de uitvoer ervan geeft, kun je die uitvoer omleiden naar / dev / null. Als de uitvoer van een commando wordt omgeleid naar / dev / null, wordt het onmiddellijk verwijderd. In plaats van dat elk commando zijn eigen “stille modus” implementeert, kunt u deze methode met elk commando gebruiken.
commando> / dev / null
Als je een bron van willekeur wilde, bijvoorbeeld voor het genereren van een coderingssleutel, dan hoef je niet je eigen generator voor willekeurige getallen te schrijven, dan zou je / dev / random kunnen gebruiken.
Om de inhoud van een harde schijf te wissen door er nullen naar te schrijven, heb je geen speciaal hulpprogramma nodig om een schijf op nul te zetten – je zou standaard hulpprogramma’s en / dev / zero kunnen gebruiken. Bijvoorbeeld de dd commando leest vanaf een locatie en schrijft naar een andere locatie. Het volgende commando leest nullen van / dev / zero en schrijft ze rechtstreeks naar de eerste harde schijf op je systeem, waarbij de inhoud volledig wordt gewist.
(Waarschuwing: Met deze opdracht worden alle gegevens op uw eerste partitie gewist 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 kunnen ook dd gebruiken om te lezen van en te schrijven naar echte bestanden. Dezelfde opdracht werkt zowel voor het rechtstreeks manipuleren van apparaten als voor het werken met bestanden.
Verduidelijking
In de praktijk is het nauwkeuriger om te zeggen dat “alles een stroom bytes is” dan “alles is een bestand”. / dev / random is geen bestand, maar het is zeker een stroom bytes. En hoewel deze dingen technisch gezien geen bestanden zijn, zijn ze wel 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? U vindt beide in het bestandssysteem; geen andere vorm van adressering nodig.
Sommige dingen zijn natuurlijk geen bestanden – processen die op uw systeem worden uitgevoerd, maken geen deel uit van het bestandssysteem. “Alles is een bestand” is onnauwkeurig, maar veel dingen gedragen zich als bestanden.