29Jul

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 bevinden zich mogelijk 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 kunt bijvoorbeeld de opdracht

cat /proc/ cpuinfo gebruiken om de inhoud van dit bestand naar de terminal af te drukken - uw CPU-informatie afdrukken naar de terminal. Je kunt /proc/ cpuinfo zelfs openen in een teksteditor om de inhoud ervan te bekijken.

Onthoud, /proc/ cpuinfo is eigenlijk geen tekstbestand met deze informatie - de Linux-kernel en het proc-bestandssysteem stellen deze informatie aan ons voor als een 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 - laat de uptime van uw Linux-kernel zien - met andere woorden, hoe lang uw systeem aan stond zonder uit te schakelen.
  • /proc/-versie - toont 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 vertegenwoordigt uw eerste harde schijf, terwijl /dev/ sda1 de eerste partitie op uw eerste harde schijf vertegenwoordigt.

Wilt u uw CD-ROM aankoppelen? 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 kunt zien, 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/ willekeurig, en /dev/ nul

Het / dev bestandssysteem bevat niet alleen bestanden die fysieke apparaten voorstellen. Hier zijn drie van de opmerkelijkste speciale apparaten die het bevat:

  • /dev/ null - Verwijdert alle gegevens die erop zijn geschreven - denk aan het als een vuilnisbak of zwart gat. Als je ooit een opmerking tegenkomt waarin je wordt gevraagd om klachten naar /dev/ null te sturen, is dat een nerd woord om te zeggen "gooi ze in de prullenmand."
  • /dev/ willekeurig - Produceert willekeur met omgevingsruis. Het is een generator voor willekeurige getallen waarop u kunt tikken.
  • /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. Door de uitvoer van een opdracht om te leiden naar /dev/ null, wordt deze direct verwijderd. In plaats van dat elke opdracht zijn eigen "stille modus" implementeert, kunt u deze methode met elke opdracht gebruiken.

-opdracht & gt;/dev/ null

Als u een bron van willekeur wilt hebben - bijvoorbeeld voor het genereren van een coderingssleutel, zou u niet uw eigen willekeurige nummergenerator hoeven te schrijven - u zou willekeurig /dev/ kunnen gebruiken.

Om de inhoud van een harde schijf te wissen door er 0's aan toe te voegen, hebt u geen speciaal hulpprogramma nodig dat is bedoeld om een ​​station op nul te stellen - u zou standaardhulpprogramma's en /dev/-nul kunnen gebruiken. Het commando dd leest bijvoorbeeld van een locatie en schrijft naar een andere locatie. De volgende opdracht leest nullen uit /dev/ nul 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 ddmet speciale bestanden( /dev/ nul 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 rechtstreeks 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/ willekeurig 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.

Natuurlijk zijn sommige dingen eigenlijk 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 wel als bestanden.