29Jul

Hva betyr "Alt er en fil" Betydning i Linux?

En av de definerende trekk ved Linux og andre UNIX-lignende operativsystemer er at “alt er en fil.” Dette er en overforenkling, men å forstå hva det betyr vil hjelpe deg å forstå hvordan det fungerer Linux.

Mange ting på Linux vises i filsystemet ditt, men de er egentlig ikke filer. De er spesielle filer som representerer maskinvareenheter, systeminformasjon og andre ting - inkludert en tilfeldig talegenerator.

Disse spesielle filer kan være lokalisert i pseudo eller virtuelle filsystemet som / dev, som inneholder spesielle filer som representerer enheter, og / proc, som inneholder spesielle filer som representerer system og behandle informasjon.

/ proc

For eksempel, la oss si at du vil finne informasjon om din CPU.Kataloget / proc inneholder en spesiell fil - /proc/ cpuinfo - som inneholder denne informasjonen.

Du trenger ikke en spesiell kommando som forteller deg din CPU-info - du kan bare lese innholdet i denne filen ved hjelp av en standardkommando som fungerer med enkle tekstfiler. For eksempel kan du bruke kommandoen

katt /proc/ cpuinfo å skrive ut denne filens innhold til terminalen - utskrift CPU informasjon til terminalen. Du kan til og med åpne /proc/ cpuinfo i en tekstredigerer for å se innholdet.

Husk /proc/ cpuinfo er faktisk ikke en tekstfil som inneholder denne informasjonen - Linux-kjernen og proc filsystemet er å utsette denne informasjonen til oss som en fil. Dette gjør at vi kan bruke kjente verktøy for å se og jobbe med informasjonen.

/ proc katalogen inneholder også andre lignende filer, for eksempel:

  • /proc/ oppetid - Utsetter oppetid på din Linux-kjernen - med andre ord, hvor lenge systemet har vært på uten å stenge ned.
  • /proc/-versjon - Utgir versjonen av Linux-kjernen din.

/ dev

I / dev-katalogen finner du filer som representerer enheter - samt filer som representerer andre spesielle ting. For eksempel er /dev/ cdrom din CD-ROM-stasjon. /dev/ sda representerer din første harddisk, mens /dev/ sda1 representerer den første partisjonen på den første harddisken din.

Vil du montere CD-ROMen din? Kjør mount-kommandoen og spesifiser /dev/ cdrom som enheten du vil montere. Vil du partisjonere din første harddisk? Kjør et diskpartisjoneringsverktøy og spesifiser /dev/ sda som harddisken du vil redigere. Vil du formatere den første partisjonen på den første harddisken din? Kjør en formateringskommando og fortell det å formatere /dev/ sda1.

Som du kan se, har du fordeler ved å utsette disse enhetene som en del av filsystemet. Filsystemet gir et konsistent "navnerom" som alle applikasjoner kan bruke til å adressere og få tilgang til enhetene.

/dev/ null, /dev/ tilfeldig og /dev/ null

/ dev-filsystemet inneholder ikke bare filer som representerer fysiske enheter. Her er tre av de mest bemerkelsesverdige spesielle enhetene den inneholder:

  • /dev/ null - Kast bort alle data som er skrevet til det - tenk på det som en søppelkasse eller et svart hull. Hvis du noen gang ser en kommentar som forteller deg til å sende klager til /dev/ null - det er en nerdete måte å si
  • /dev/ tilfeldig “kaste dem i søpla.” - Produserer tilfeldig bruke miljøstøy. Det er en tilfeldig talegenerator du kan tappe inn på.
  • /dev/ null - Produserer nuller - en konstant strøm av nuller.

Hvis du tenker på disse tre som filer, vil du ikke se en bruk for dem. I stedet tenk på dem som verktøy.

For eksempel produserer Linux-kommandoer som standard feilmeldinger og annen utgang som de skriver ut til standardutgangen, vanligvis terminalen. Hvis du vil kjøre en kommando og ikke bryr seg om dens utgang, kan du omdirigere den utdata til /dev/ null. Omdirigere en kommandos utdata til /dev/ null kasserer den umiddelbart. I stedet for å ha hver kommando implementere sin egen "stille modus", kan du bruke denne metoden med en hvilken som helst kommando.

kommando & gt;/dev/ null

Hvis du vil ha en tilfeldighetskilde - si, for å generere en krypteringsnøkkel, trenger du ikke å skrive din egen tilfeldige tallgenerator - du kan bruke /dev/ tilfeldig.

Hvis du vil slette innholdet på harddisken ved å skrive 0 til det, trenger du ikke et spesielt verktøy dedikert til null-en stasjon - du kan bruke standardverktøy og /dev/ null. For eksempel, dd kommandoen leser fra et sted og skriver til et annet sted. Følgende kommando ville lese nuller fra /dev/ null og skrive dem direkte til den første harddiskpartisjonen på systemet, og helt slett innholdet.

( Advarsel : Denne kommandoen vil slette alle dataene i den første partisjonen din hvis du kjører den. Bare kjør denne kommandoen hvis du vil ødelegge data.)

dd hvis = /dev/ null av = /dev/ sda1

Her bruker vi ddmed spesielle filer( /dev/ null og /dev/ sda1), men vi kunne også bruke dd til å lese fra og skrive til faktiske filer. Samme kommando fungerer både for å manipulere enheter direkte og arbeider med filer.

Klarering

I praksis er det mer nøyaktig å si at "alt er en strøm av byte" enn "alt er en fil." /dev/ tilfeldig er ikke en fil, men det er absolutt en bytebit. Og selv om disse tingene teknisk sett ikke er filer, er de tilgjengelige i filsystemet - filsystemet er et universelt navnrom hvor alt er tilgjengelig. Vil du få tilgang til en tilfeldig talegenerator eller lese direkte fra en enhet? Du finner både i filsystemet;ingen annen form for adressering nødvendig.

Selvfølgelig er enkelte ting egentlig ikke filer - prosesser som kjører på systemet, er ikke en del av filsystemet."Alt er en fil" er unøyaktig, men mange ting oppfører seg som filer.